qinglong-go/service/env/env.go

158 lines
2.9 KiB
Go

package env
import (
log "github.com/huoxue1/go-utils/base/log"
"github.com/huoxue1/qinglong-go/models"
"os"
"regexp"
"time"
)
var (
DISABLESTATUS = 1
ENABLESTATUS = 0
)
func MoveEnv(id int, fromIndex, toIndex int64) error {
if fromIndex < toIndex {
envs, err := models.QueryEnvByIndex(fromIndex, toIndex)
if err != nil {
return err
}
for _, env := range envs {
env.SerialIndex = env.SerialIndex - 1
_ = models.UpdateEnv(env)
}
} else {
envs, err := models.QueryEnvByIndex(toIndex, fromIndex)
if err != nil {
return err
}
for _, env := range envs {
env.SerialIndex = env.SerialIndex + 1
_ = models.UpdateEnv(env)
}
}
env, err := models.GetEnv(id)
if err != nil {
return err
}
env.SerialIndex = toIndex
_ = models.UpdateEnv(env)
return nil
}
func AddEnv(env *models.Envs) (int, error) {
return models.AddEnv(env)
}
func QueryEnv(searchValue string) ([]*models.Envs, error) {
return models.QueryEnv(searchValue)
}
func UpdateEnv(env *models.Envs) error {
env1, _ := models.GetEnv(env.Id)
env1.Name = env.Name
env1.Value = env.Value
env1.Remarks = env.Remarks
env1.Updatedat = time.Now()
return models.UpdateEnv(env1)
}
func GetEnv(id int) *models.Envs {
env, err := models.GetEnv(id)
if err != nil {
return nil
}
return env
}
func DisableEnv(ids []int) error {
for _, id := range ids {
env, err := models.GetEnv(id)
if err != nil {
continue
}
env.Status = DISABLESTATUS
err = models.UpdateEnv(env)
if err != nil {
return err
}
}
return nil
}
func EnableEnv(ids []int) error {
for _, id := range ids {
env, err := models.GetEnv(id)
if err != nil {
continue
}
env.Status = ENABLESTATUS
err = models.UpdateEnv(env)
if err != nil {
return err
}
}
return nil
}
func DeleteEnv(ids []int) error {
for _, id := range ids {
err := models.DeleteEnv(id)
if err != nil {
return err
}
}
return nil
}
func LoadEnvFromDb() map[string]string {
result := make(map[string]string, 0)
envs, err := QueryEnv("")
if err != nil {
log.Errorln(err.Error())
return result
}
for _, env := range envs {
if env.Status == 1 {
continue
}
if _, ok := result[env.Name]; ok {
result[env.Name] = result[env.Name] + "&" + env.Value
} else {
result[env.Name] = env.Value
}
}
return result
}
func LoadEnvFromFile(file string) map[string]string {
result := make(map[string]string, 0)
data, _ := os.ReadFile(file)
compile := regexp.MustCompile(`export\s(.*?)="(.*?)"`)
match := compile.FindAllStringSubmatch(string(data), -1)
for _, i := range match {
if _, ok := result[i[1]]; ok {
result[i[1]] = result[i[1]] + "&" + i[2]
} else {
result[i[1]] = i[2]
}
}
return result
}
func GetALlEnv() map[string]string {
envFromDb := LoadEnvFromDb()
envfromFile := LoadEnvFromFile("data/config/config.sh")
for s, s2 := range envfromFile {
if _, ok := envFromDb[s]; ok {
envFromDb[s] = envFromDb[s] + "&" + s2
} else {
envFromDb[s] = s2
}
}
return envFromDb
}