First migrate tenants script
This commit is contained in:
parent
096430d853
commit
21da83dfc7
78
scripts/migrateTenants.go
Normal file
78
scripts/migrateTenants.go
Normal file
@ -0,0 +1,78 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
companyDB "multitenantStack/services/companydb"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
|
||||
_ "github.com/lib/pq"
|
||||
)
|
||||
|
||||
var conf companyDB.DBConfig
|
||||
|
||||
func main() {
|
||||
migType := ""
|
||||
if len(os.Args) > 1 {
|
||||
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())
|
||||
}
|
||||
|
||||
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) {
|
||||
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)
|
||||
|
||||
cmdString := fmt.Sprintf("%s%s", os.Getenv("GOPATH"), "/bin/bee")
|
||||
cmd := exec.Command(cmdString, "migrate", migType, connString)
|
||||
|
||||
// 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
|
||||
}
|
Loading…
Reference in New Issue
Block a user