niki/cmd/benefactor/command/migrate.go

54 lines
1.2 KiB
Go

package command
import (
migrator "git.gocasts.ir/ebhomengo/niki/pkg/database/migrator"
"git.gocasts.ir/ebhomengo/niki/pkg/logger"
"github.com/spf13/cobra"
)
var up bool
var down bool
var migrateCmd = &cobra.Command{
Use: "migrate",
Short: "Run database migrations",
Long: `This command runs the database migrations for the benefactor service.`,
Run: func(cmd *cobra.Command, args []string) {
migrate()
},
}
func migrate() {
var cfg = loadAppConfig()
mysqlConfig := getMysqlConfig()
logger.Init(cfg.Logger)
log := logger.L()
migratorCfg := migrator.Config{
MysqlConfig: mysqlConfig,
MigrationPath: cfg.PathOfMigration,
MigrationDBName: "gorp_migrations",
}
// Run migrations if flags are set
if migrateUp || migrateDown {
mgr := migrator.New(migratorCfg)
if migrateUp {
log.Info("Running migrations up...")
mgr.Up()
log.Info("Migrations up completed.")
}
if migrateDown {
log.Info("Running migrations down...")
mgr.Down()
log.Info("Migrations down completed.")
}
}
}
func init() {
migrateCmd.Flags().BoolVar(&up, "up", false, "Run migrations up")
migrateCmd.Flags().BoolVar(&down, "down", false, "Run migrations down")
RootCmd.AddCommand(migrateCmd)
}