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