Files
2026-01-31 11:47:30 +00:00

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)
}