package main import ( "flag" "fmt" "log" "os" "git.pbiernat.dev/egommerce/basket-service/internal/app/config" "git.pbiernat.dev/egommerce/go-api-pkg/fluentd" "github.com/go-pg/migrations/v8" "github.com/go-pg/pg/v10" ) const ( defAppName = "basket-svc-migrations" defMigrationsTableName = "basket.migrations" defLoggerAddr = "api-logger:24224" // defKVNmspc = "dev.egommerce/service/basket-migration" ) const usageText = `This program runs command on the db. Supported commands are: - init - creates version info table in the database - up - runs all available migrations. - up [target] - runs available migrations up to the target one. - down - reverts last migration. - reset - reverts all migrations. - version - prints current db version. - set_version [version] - sets db version without running migrations. Usage: go run cmd/migrate/main.go [args] ` func main() { if config.ErrLoadingEnvs != nil { log.Panicln("Error loading .env file", config.ErrLoadingEnvs) } // dbURL := config.GetEnv("DATABASE_URL", defDbURL) loggerAddr := config.GetEnv("LOGGER_ADDR", defLoggerAddr) mTblName := config.GetEnv("MIGRATIONS_TABLE_NAME", defMigrationsTableName) logHost, logPort := fluentd.ParseAddr(loggerAddr) logger := fluentd.NewLogger(defAppName, logHost, logPort) defer logger.Close() flag.Usage = usage flag.Parse() db := pg.Connect(&pg.Options{ // FIXME Addr: "postgres-db:5432", User: "postgres", Password: "12345678", Database: "egommerce", }) mig := migrations.NewCollection() mig.SetTableName(mTblName) err := mig.DiscoverSQLMigrations("./migrations") if err != nil { logger.Log("migration dicovery error: %#v", err) } oldVersion, newVersion, err := mig.Run(db, flag.Args()...) if err != nil { logger.Log("migration runner error: %#v", err) os.Exit(1) } if newVersion != oldVersion { logger.Log("migrated from version %d to %d\n", oldVersion, newVersion) } else { logger.Log("version is %d\n", oldVersion) } } func usage() { fmt.Print(usageText) flag.PrintDefaults() os.Exit(2) }