basket-service/src/cmd/migrate/main.go
Piotr Biernat 9c74b911c3
Some checks failed
continuous-integration/drone/push Build is failing
Refactoring
2022-12-25 23:19:24 +01:00

81 lines
2.1 KiB
Go

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