qinglong-go/service/env/env.go

112 lines
2.0 KiB
Go

package env
import (
"github.com/huoxue1/qinglong-go/models"
log "github.com/sirupsen/logrus"
"os"
"regexp"
"time"
)
var (
DISABLESTATUS = 1
ENABLESTATUS = 0
)
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 _, 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
}