From 3838aaa965880d0dd4184c4b136761986c7cd23b Mon Sep 17 00:00:00 2001 From: Alex Goth Date: Fri, 9 Aug 2024 14:35:00 +0200 Subject: [PATCH] refactor: expose migrate interface --- config.example.yaml | 1 + tools/migrate/migrate.go | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/config.example.yaml b/config.example.yaml index 6db81c158..e6e2a0d40 100644 --- a/config.example.yaml +++ b/config.example.yaml @@ -57,6 +57,7 @@ events: postgres: url: postgres://postgres:postgres@localhost:5432/postgres?sslmode=disable + autoMigrate: true # Runs migrations as part of the service startup meters: # Sample meter to count API requests diff --git a/tools/migrate/migrate.go b/tools/migrate/migrate.go index 5e9cd2ecd..bab0da32d 100644 --- a/tools/migrate/migrate.go +++ b/tools/migrate/migrate.go @@ -1,26 +1,36 @@ -// A lightweigh migration tool to replace `ent.Schema.Create` calls. +// A very lightweigh migration tool to replace `ent.Schema.Create` calls. package migrate import ( "embed" + "io/fs" "github.com/golang-migrate/migrate/v4" _ "github.com/golang-migrate/migrate/v4/database/postgres" "github.com/golang-migrate/migrate/v4/source/iofs" ) +type Migrate = migrate.Migrate + //go:embed migrations -var fs embed.FS +var omMigrations embed.FS -func Up(conn string) error { +// NewMigrate creates a new migrate instance. +// fs is expected to contain a migrations directory with the migration files. +func NewMigrate(conn string, fs fs.FS) (*Migrate, error) { d, err := iofs.New(fs, "migrations") if err != nil { - return err + return nil, err } - m, err := migrate.NewWithSourceInstance("iofs", d, conn) + return migrate.NewWithSourceInstance("iofs", d, conn) +} + +func Up(conn string) error { + m, err := NewMigrate(conn, omMigrations) if err != nil { return err } + defer m.Close() err = m.Up() if err != nil {