package migrator import ( "context" "fmt" "strings" "git.neonxp.ru/neonxp/guessr/cmd/migrator/migrate" "git.neonxp.ru/neonxp/guessr/cmd/migrator/migrator" "git.neonxp.ru/neonxp/guessr/migrations" "github.com/urfave/cli/v3" ) var Command = &cli.Command{ Name: "db", Usage: "manage database migrations", Commands: []*cli.Command{ { Name: "init", Usage: "create migration tables", Action: migrate.Init, }, { Name: "migrate", Usage: "migrate database", Action: migrate.Migrate, }, { Name: "rollback", Usage: "rollback the last migration group", Action: migrate.Rollback, }, { Name: "create", Usage: "create migration", Action: func(ctx context.Context, c *cli.Command) error { migrator, err := migrator.New(c, migrations.Migrations) if err != nil { return err } name := strings.Join(c.Args().Slice(), "_") mf, err := migrator.CreateGoMigration(ctx, name) if err != nil { return err } fmt.Printf("created migration %s (%s)\n", mf.Name, mf.Path) return nil }, }, }, }