move migrateTenants
This commit is contained in:
105
scripts/migrateTenants/migrateTenants.go
Normal file
105
scripts/migrateTenants/migrateTenants.go
Normal file
@ -0,0 +1,105 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
companyDB "multitenantStack/services/companydb"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
|
||||
_ "github.com/lib/pq"
|
||||
)
|
||||
|
||||
var conf companyDB.DBConfig
|
||||
|
||||
func main() {
|
||||
migrateSystem := false
|
||||
migType := ""
|
||||
if len(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()
|
||||
conf = companyDB.Conf
|
||||
|
||||
systemDB := companyDB.GetSystemDatabase()
|
||||
|
||||
result, err := systemDB.Query("SELECT datname FROM pg_database WHERE datistemplate = false;")
|
||||
if err != nil {
|
||||
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() {
|
||||
var dbName string
|
||||
result.Scan(&dbName)
|
||||
if strings.HasPrefix(dbName, "company_") {
|
||||
fmt.Printf(" migrating...")
|
||||
migrateDbName(dbName, migType)
|
||||
}
|
||||
fmt.Printf("\n")
|
||||
}
|
||||
}
|
||||
|
||||
func printCommand(cmd *exec.Cmd) {
|
||||
fmt.Printf("==> Executing: %s\n", strings.Join(cmd.Args, " "))
|
||||
}
|
||||
|
||||
func printError(err error) {
|
||||
if err != nil {
|
||||
os.Stderr.WriteString(fmt.Sprintf("==> Error: %s\n", err.Error()))
|
||||
}
|
||||
}
|
||||
|
||||
func printOutput(outs []byte) {
|
||||
if len(outs) > 0 {
|
||||
fmt.Printf("==> Output: %s\n", string(outs))
|
||||
}
|
||||
}
|
||||
|
||||
func migrateDbName(dbName, migType string) {
|
||||
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")
|
||||
|
||||
var cmd *exec.Cmd
|
||||
if migType != "" {
|
||||
cmd = exec.Command(cmdString, "migrate", migType, connString, dir)
|
||||
} else {
|
||||
fmt.Println("no command")
|
||||
if dir == "" {
|
||||
cmd = exec.Command(cmdString, "migrate", connString)
|
||||
} else {
|
||||
cmd = exec.Command(cmdString, "migrate", connString, dir)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// Combine stdout and stderr
|
||||
printCommand(cmd)
|
||||
output, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
printError(err)
|
||||
printOutput(output)
|
||||
} else {
|
||||
fmt.Println("Success")
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user