91 lines
2.4 KiB
Go
91 lines
2.4 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/go-pg/migrations/v8"
|
|
"github.com/go-pg/pg/v10"
|
|
|
|
"git.ego.cloudns.be/egommerce/go-api-pkg/fluentd"
|
|
|
|
cnf "git.ego.cloudns.be/egommerce/catalog-service/internal/server"
|
|
baseCnf "git.ego.cloudns.be/egommerce/go-api-pkg/config"
|
|
)
|
|
|
|
const (
|
|
defAppName = "catalog-svc-migrations"
|
|
defMigrationsTableName = "catalog.migrations"
|
|
defLoggerAddr = "api-logger:24224"
|
|
// defKVNmspc = "dev.egommerce/service/catalog-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() {
|
|
flag.Usage = func() {
|
|
fmt.Print(usageText)
|
|
flag.PrintDefaults()
|
|
os.Exit(2)
|
|
}
|
|
flag.Parse()
|
|
|
|
if baseCnf.ErrLoadingEnvs != nil {
|
|
log.Panicln("Error loading .env file", baseCnf.ErrLoadingEnvs)
|
|
}
|
|
|
|
c := cnf.NewConfig("catalog-migrator")
|
|
|
|
// dbURL := baseCnf.GetEnv("DATABASE_URL", defDbURL)
|
|
|
|
logHost, logPort, err := fluentd.ParseAddr(c.LoggerAddr)
|
|
if err != nil {
|
|
log.Fatalf("Error parsing logger addr: %s. Err: %v", c.LoggerAddr, err)
|
|
}
|
|
|
|
logger, err := fluentd.NewLogger(c.GetAppFullName(), logHost, logPort) // @Refactor NewLogger return (logger, error)
|
|
if err != nil {
|
|
log.Fatalf("Error connecting to %s:%d. Err: %v", logHost, logPort, err)
|
|
}
|
|
defer logger.Close()
|
|
|
|
db := pg.Connect(&pg.Options{ // FIXME
|
|
Addr: "postgres-db:5432",
|
|
User: "postgres",
|
|
Password: "12345678",
|
|
Database: "egommerce",
|
|
})
|
|
defer db.Close()
|
|
|
|
mTbl := baseCnf.GetEnv("MIGRATIONS_TABLE_NAME", defMigrationsTableName)
|
|
mig := migrations.NewCollection()
|
|
mig.SetTableName(mTbl)
|
|
if err := mig.DiscoverSQLMigrations("./migrations"); 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)
|
|
}
|
|
// os.Exit(0)
|
|
}
|