From e8452e0d7794142c2a8582207ba5a5f7b6bb97bd Mon Sep 17 00:00:00 2001 From: Lukas Bachschwell Date: Wed, 14 Nov 2018 18:47:42 +0100 Subject: [PATCH] Migration Automation - Adding docker DB template, - migrationscript, - config update, . adding migration to bee rs --- bee.json | 4 +++- conf/dbconfig.toml | 2 +- docker/.gitignore | 1 + docker/docker-compose.yml | 2 +- scripts/migrateTenants.go | 47 ++++++++++++++++++++++++++++----------- 5 files changed, 40 insertions(+), 16 deletions(-) create mode 100644 docker/.gitignore diff --git a/bee.json b/bee.json index 9c1a1da..e1fc25c 100644 --- a/bee.json +++ b/bee.json @@ -3,7 +3,9 @@ "go_install": false, "scripts": { "test": "go test -v tests/*.go", - "convey": "goconvey tests/" + "convey": "goconvey tests/", + "migrate:system": "go run scripts/migrateTenants.go system", + "migrate:tenants": "go run scripts/migrateTenants.go" }, "cmd_args": [], "envs": [], diff --git a/conf/dbconfig.toml b/conf/dbconfig.toml index 7847160..3852ae9 100644 --- a/conf/dbconfig.toml +++ b/conf/dbconfig.toml @@ -1,6 +1,6 @@ Host = "127.0.0.1" User = "postgres" -Password = "postgres" +Password = "ENvfffM4hrJAKrs8" Port = 5435 Db = "system" Ssl = "disable" diff --git a/docker/.gitignore b/docker/.gitignore new file mode 100644 index 0000000..1c2f433 --- /dev/null +++ b/docker/.gitignore @@ -0,0 +1 @@ +tmp \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 8c44963..4ac6ccc 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -5,7 +5,7 @@ services: volumes: - ./tmp/db:/var/lib/postgresql/data environment: - POSTGRES_DATABASE: "system" + POSTGRES_DB: "system" POSTGRES_USER: "postgres" POSTGRES_PASSWORD: "ENvfffM4hrJAKrs8" ports: diff --git a/scripts/migrateTenants.go b/scripts/migrateTenants.go index 77812f5..1f9eb78 100644 --- a/scripts/migrateTenants.go +++ b/scripts/migrateTenants.go @@ -13,9 +13,17 @@ import ( var conf companyDB.DBConfig func main() { + migrateSystem := false migType := "" if len(os.Args) > 1 { - migType = os.Args[1] + if os.Args[1] == "system" { + migrateSystem = true + if len(os.Args) > 2 { + migType = os.Args[2] + } + } else { + migType = os.Args[1] + } } companyDB.InitCompanyDBService() @@ -28,6 +36,12 @@ func main() { panic(err.Error()) } + if migrateSystem { + fmt.Printf("SYSTEM DB: migrate %s\n", migType) + migrateDbName("system", migType) + return + } + fmt.Printf("migrate %s\n", migType) for result.Next() { @@ -58,21 +72,28 @@ func printOutput(outs []byte) { } func migrateDbName(dbName, migType string) { - connString := fmt.Sprintf("--conn=\"postgres://%s:%s@%s:%d/%s?sslmode=%s\"", conf.User, conf.Password, conf.Host, conf.Port, dbName, conf.Ssl) - fmt.Println(connString) + dir := "" + if dbName == "system" { + dir = "--dir=database/systemmigrations" + } + connString := fmt.Sprintf("--conn=postgres://%s:%s@%s:%d/%s?sslmode=%s", conf.User, conf.Password, conf.Host, conf.Port, dbName, conf.Ssl) cmdString := fmt.Sprintf("%s%s", os.Getenv("GOPATH"), "/bin/bee") - cmd := exec.Command(cmdString, "migrate", migType, connString) + + var cmd *exec.Cmd + if migType != "" { + cmd = exec.Command(cmdString, "migrate", migType, connString, dir) + } else { + cmd = exec.Command(cmdString, "migrate", connString, dir) + } // Combine stdout and stderr printCommand(cmd) - _, err := cmd.CombinedOutput() - printError(err) - // printOutput(output) - - // check what migration type - // query system table - // //run all or single tenant, check if tenant exists - // execute commands (blocking!) - // print out all states in new lines with green or red and error + output, err := cmd.CombinedOutput() + if err != nil { + printError(err) + printOutput(output) + } else { + fmt.Println("Success") + } }