Files
oc-k8s/internal/db.go
2026-01-07 16:56:27 +01:00

97 lines
2.6 KiB
Go

package internal
import (
"errors"
"fmt"
"oc-k8s/utils"
"os"
"strings"
)
func Help_DB() {
fmt.Println(`
Cluster commands: oc-k8s <action> 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...)
}