From 009be4f2c8ec6e2f377c5eafba8994473b66e10d Mon Sep 17 00:00:00 2001 From: aaron <462826@qq.com> Date: Wed, 18 Nov 2020 16:34:42 +0800 Subject: [PATCH] load config yaml to db --- src/gen/definition.go | 27 ++------------------------- src/gen/res.go | 8 ++++---- src/model/model.go | 6 +++--- src/server/service/config.go | 14 +++++++++++++- src/utils/string/string.go | 23 +++++++++++++++++++++++ 5 files changed, 45 insertions(+), 33 deletions(-) diff --git a/src/gen/definition.go b/src/gen/definition.go index 29e52681..07b43106 100644 --- a/src/gen/definition.go +++ b/src/gen/definition.go @@ -26,7 +26,7 @@ func LoadConfigDef(defaultFile, configFile string, fieldsToExport *[]string) mod } defaultContent, err := ioutil.ReadFile(pathDefaultFile) - defaultContent = ReplaceSpecialChars(defaultContent) + defaultContent = stringUtils.ReplaceSpecialChars(defaultContent) if err != nil { logUtils.PrintToWithColor(i118Utils.I118Prt.Sprintf("fail_to_read_file", pathDefaultFile), color.FgCyan) return defaultDef @@ -45,7 +45,7 @@ func LoadConfigDef(defaultFile, configFile string, fieldsToExport *[]string) mod } yamlContent, err := ioutil.ReadFile(pathConfigFile) - yamlContent = ReplaceSpecialChars(yamlContent) + yamlContent = stringUtils.ReplaceSpecialChars(yamlContent) if err != nil { logUtils.PrintToWithColor(i118Utils.I118Prt.Sprintf("fail_to_read_file", pathConfigFile), color.FgCyan) return configDef @@ -227,26 +227,3 @@ func CopyField(child model.DefField, parent *model.DefField) { } } -func ReplaceSpecialChars(bytes []byte) []byte { - str := string(bytes) - - inRanges := false // for ranges yaml only - ret := "" - for _, line := range strings.Split(str, "\n") { - if strings.Index(strings.TrimSpace(line), "ranges") == 0 { - inRanges = true - } else if len(line) > 0 && string(line[0]) != " " { // not begin with space, ranges end - inRanges = false - } - - if strings.Index(strings.TrimSpace(line), "range") == 0 || inRanges { - line = strings.ReplaceAll(line,"[", string(constant.LeftBrackets)) - line = strings.ReplaceAll(line,"]", string(constant.RightBrackets)) - } - - ret += line + "\n" - } - - return []byte(ret) -} - diff --git a/src/gen/res.go b/src/gen/res.go index 07f4d0fb..5ee17d99 100644 --- a/src/gen/res.go +++ b/src/gen/res.go @@ -120,7 +120,7 @@ func getResFromYaml(resFile string) (valueMap map[string][]string, resName strin } yamlContent, err := ioutil.ReadFile(resFile) - yamlContent = ReplaceSpecialChars(yamlContent) + yamlContent = stringUtils.ReplaceSpecialChars(yamlContent) if err != nil { logUtils.PrintTo(i118Utils.I118Prt.Sprintf("fail_to_read_file", resFile)) @@ -141,7 +141,7 @@ func getResFromYaml(resFile string) (valueMap map[string][]string, resName strin } else { configRes := model.DefField{} err = yaml.Unmarshal(yamlContent, &configRes) - if err == nil { // config + if err == nil { // config valueMap = getResForConfig(configRes) resName = configRes.Field } @@ -226,7 +226,7 @@ func getreferencedRangeOrInstant(inst model.DefField) (referencedRanges model.Re resFile, _, _ := fileUtils.GetResProp(inst.From) yamlContent, err := ioutil.ReadFile(resFile) - yamlContent = ReplaceSpecialChars(yamlContent) + yamlContent = stringUtils.ReplaceSpecialChars(yamlContent) if err != nil { logUtils.PrintTo(i118Utils.I118Prt.Sprintf("fail_to_read_file", resFile)) return @@ -280,4 +280,4 @@ func getResForConfig(configRes model.DefField) map[string][]string { groupedValue["all"] = GenerateForField(&configRes, false) return groupedValue -} \ No newline at end of file +} diff --git a/src/model/model.go b/src/model/model.go index 581721a8..8910d901 100644 --- a/src/model/model.go +++ b/src/model/model.go @@ -243,9 +243,6 @@ type ZdConfig struct { Name string `gorm:"column:name" json:"name"` Desc string `gorm:"column:desc" json:"desc"` Path string `gorm:"column:path" json:"path" yaml:"-"` - - Yaml string `gorm:"yaml" json:"yaml"` - Folder string `gorm:"-" json:"folder" yaml:"-"` Field string `gorm:"column:field" json:"field"` Note string `gorm:"column:note" json:"note"` @@ -254,6 +251,9 @@ type ZdConfig struct { Loop string `gorm:"column:loop" json:"loop"` Loopfix string `gorm:"column:loopfix" json:"loopfix"` Format string `gorm:"column:format" json:"format"` + + Yaml string `gorm:"yaml" json:"yaml"` + Folder string `gorm:"-" json:"folder" yaml:"-"` } func (*ZdConfig) TableName() string { return constant.TablePrefix + "config" diff --git a/src/server/service/config.go b/src/server/service/config.go index b7e924d9..6197c31b 100644 --- a/src/server/service/config.go +++ b/src/server/service/config.go @@ -5,6 +5,8 @@ import ( "github.com/easysoft/zendata/src/server/repo" logUtils "github.com/easysoft/zendata/src/utils/log" stringUtils "github.com/easysoft/zendata/src/utils/string" + "gopkg.in/yaml.v3" + "io/ioutil" ) type ConfigService struct { @@ -55,7 +57,17 @@ func (s *ConfigService) saveResToDB(config []model.ResFile, list []*model.ZdConf for _, item := range config { if !stringUtils.FindInArrBool(item.Path, names) { - config := model.ZdConfig{Title: item.Title, Name: item.Name, Desc: item.Desc, Field: item.Title, Path: item.Path, Note: item.Desc} + content, _ := ioutil.ReadFile(item.Path) + yamlContent := stringUtils.ReplaceSpecialChars(content) + config := model.ZdConfig{} + err = yaml.Unmarshal(yamlContent, &config) + config.Title = item.Title + config.Name = item.Name + config.Desc = item.Desc + config.Path = item.Path + config.Field = item.Title + config.Note = item.Desc + s.configRepo.Save(&config) } } diff --git a/src/utils/string/string.go b/src/utils/string/string.go index b8a59181..ed5b538c 100644 --- a/src/utils/string/string.go +++ b/src/utils/string/string.go @@ -245,3 +245,26 @@ func UrlEncode(str string) (ret string) { return } + +func ReplaceSpecialChars(bytes []byte) []byte { + str := string(bytes) + + inRanges := false // for ranges yaml only + ret := "" + for _, line := range strings.Split(str, "\n") { + if strings.Index(strings.TrimSpace(line), "ranges") == 0 { + inRanges = true + } else if len(line) > 0 && string(line[0]) != " " { // not begin with space, ranges end + inRanges = false + } + + if strings.Index(strings.TrimSpace(line), "range") == 0 || inRanges { + line = strings.ReplaceAll(line,"[", string(constant.LeftBrackets)) + line = strings.ReplaceAll(line,"]", string(constant.RightBrackets)) + } + + ret += line + "\n" + } + + return []byte(ret) +} -- GitLab