mirror of
https://github.com/bitmagnet-io/bitmagnet.git
synced 2026-08-03 01:43:48 -04:00
44 lines
928 B
Go
44 lines
928 B
Go
package dev
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/bitmagnet-io/bitmagnet/internal/database/migrator"
|
|
"github.com/bitmagnet-io/bitmagnet/internal/plugin/cmd"
|
|
"github.com/bitmagnet-io/bitmagnet/internal/workers/runner"
|
|
"github.com/bitmagnet-io/bitmagnet/pkg/env"
|
|
)
|
|
|
|
type MigrateCommand struct {
|
|
cmd.Cmd `cmd:"doc=Run database migrations"`
|
|
cmd.App[CommandDeps]
|
|
}
|
|
|
|
func (c *MigrateCommand) Run(env env.Env) error {
|
|
return c.NewRunner(func(deps CommandDeps) runner.Runner {
|
|
return runner.SimpleRunner(func(ctx context.Context) error {
|
|
ctx, cancel := context.WithCancelCause(ctx)
|
|
defer cancel(nil)
|
|
|
|
shutdown, err := deps.DBProvider.Runner()(ctx, cancel)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
sqlDB, err := deps.DBProvider.SQLDB()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
mgr := migrator.New(sqlDB, deps.Logger)
|
|
|
|
err = mgr.Up(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return shutdown(ctx)
|
|
})
|
|
})(env)
|
|
}
|