package internal import ( "errors" "fmt" "oc-k8s/utils" "os" "strings" ) func Help_DB() { fmt.Println(` Cluster commands: oc-k8s cluster create - Add datas in db replace - Replace datas in db delete - Delete datas in db help - Show this help message Usage: oc-k8s create db [file_path] [release] [db_name] [env_folder] file_path - Datas folder files path (required) release - Release values name (default: dev) db_name - db name (default: opencloud) env_folder - Helm config folder (required, default: .) oc-k8s upgrade db [file_path] [release] [db_name] [env_folder] file_path - Datas folder files path (required) release - Release values name (default: dev) db_name - db name (default: opencloud) env_folder - Helm config folder (required, default: .) oc-k8s delete db [release] [db_name] [env_folder] release - Release values name (default: dev) db_name - db name (default: opencloud) env_folder - Helm config folder (required, default: .) oc-k8s help db `) } func Delete_DB(args ...string) error { release := "dev" db_name := "dev" if len(args) > 0 { release = args[0] } if len(args) > 1 { db_name = args[1] } podName := "$(kubectl get pods -n " + release + " -o=name | grep " + release + "-mongodb-* | sed 's|pod/||')" return utils.Exec("kubectl exec " + podName + ": -- mongosh --eval \"db.getSiblingDB('" + db_name + "').dropDatabase()\"") } func getFileNames(folderPath string) []string { fileNames := []string{} entries, err := os.ReadDir(folderPath) if err != nil { return fileNames } for _, entry := range entries { if entry.IsDir() { continue } fileNames = append(fileNames, entry.Name()) } return fileNames } func Create_DB(args ...string) error { filePath := "" if len(args) == 0 { return errors.New("missing db datas file path") } else { filePath = args[0] } release := "dev" db_name := "dev" if len(args) > 1 { release = args[1] } if len(args) > 2 { db_name = args[2] } podName := "$(kubectl get pods -n " + release + " -o=name | grep " + release + "-mongodb-* | sed 's|pod/||')" for _, fileName := range getFileNames(filePath) { fmt.Println("ADD file " + fileName + " in collection") if err := utils.Exec("kubectl cp " + fileName + " " + podName + ":/tmp/" + fileName); err != nil { return err } if err := utils.Exec("kubectl exec " + podName + ": -- mongoimport --db " + db_name + " --collection " + strings.ReplaceAll(fileName, ".json", "") + " --file /tmp/" + fileName + " --jsonArray"); err != nil { return err } } return nil } func Upgrade_DB(args ...string) error { Delete_DB(args[1:]...) return Create_DB(args...) }