38 lines
753 B
Go
38 lines
753 B
Go
package application
|
|
|
|
import (
|
|
"context"
|
|
"embed"
|
|
"fmt"
|
|
|
|
"github.com/uptrace/bun"
|
|
"github.com/uptrace/bun/migrate"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
//go:embed migrations/*.sql
|
|
var migrationFiles embed.FS
|
|
|
|
func Migrate(ctx context.Context, db *bun.DB, logger *zap.Logger) error {
|
|
migrations := migrate.NewMigrations()
|
|
|
|
if err := migrations.Discover(migrationFiles); err != nil {
|
|
return fmt.Errorf("discover migrations: %w", err)
|
|
}
|
|
|
|
migrator := migrate.NewMigrator(db, migrations)
|
|
|
|
if initErr := migrator.Init(ctx); initErr != nil {
|
|
return fmt.Errorf("init migrations: %w", initErr)
|
|
}
|
|
|
|
group, err := migrator.Migrate(ctx)
|
|
if err != nil {
|
|
return fmt.Errorf("migrate: %w", err)
|
|
}
|
|
|
|
logger.Sugar().Infof("migrated: %s", group.String())
|
|
|
|
return nil
|
|
}
|