From 2b5c5548ba51e97f03fb61e6f364f97ad34d7349 Mon Sep 17 00:00:00 2001 From: aaron <462826@qq.com> Date: Fri, 20 Nov 2020 14:39:19 +0800 Subject: [PATCH] gen def yaml from DB --- src/model/request.go | 4 ++-- src/server/repo/config.go | 2 +- src/server/repo/def.go | 2 +- src/server/repo/excel.go | 2 +- src/server/repo/instances.go | 2 +- src/server/repo/ranges.go | 2 +- src/server/repo/text.go | 2 +- src/server/service/config.go | 5 ----- src/server/service/def.go | 26 ++++++++++++-------------- src/server/service/excel.go | 5 ----- src/server/service/instances.go | 5 ----- src/server/service/ranges.go | 5 ----- src/server/service/sync.go | 1 - src/server/service/text.go | 4 ---- src/service/article.go | 9 ++------- src/service/list.go | 2 +- src/utils/string/string.go | 10 ++++++++++ ui/src/layout/MainLayout.less | 2 +- users/test/_test-data.yaml | 28 ---------------------------- 19 files changed, 34 insertions(+), 84 deletions(-) delete mode 100644 users/test/_test-data.yaml diff --git a/src/model/request.go b/src/model/request.go index 319d72f8..92f420c2 100644 --- a/src/model/request.go +++ b/src/model/request.go @@ -30,8 +30,8 @@ type ResData struct { type Model struct { ID uint `gorm:"column:id;primary_key" json:"id"` - CreatedAt time.Time `gorm:"column:createTime" json:"createTime" yaml:"-"` - UpdatedAt time.Time `gorm:"column:updateTime" json:"updateTime" yaml:"-"` + CreatedAt time.Time `gorm:"column:createdAt" json:"createdAt" yaml:"-"` + UpdatedAt time.Time `gorm:"column:updatedAt" json:"updatedAt" yaml:"-"` Disabled bool `gorm:"column:disabled;default:false" json:"disabled" yaml:"-"` Deleted bool `gorm:"column:deleted;default:false" json:"deleted" yaml:"-"` diff --git a/src/server/repo/config.go b/src/server/repo/config.go index fc1bb76a..cf9a7403 100644 --- a/src/server/repo/config.go +++ b/src/server/repo/config.go @@ -11,7 +11,7 @@ type ConfigRepo struct { } func (r *ConfigRepo) ListAll() (models []*model.ZdConfig) { - r.db.Find(&models) + r.db.Select("id,title,folder,path,updatedAt").Find(&models) return } diff --git a/src/server/repo/def.go b/src/server/repo/def.go index d4ecf23e..6dacf2cb 100644 --- a/src/server/repo/def.go +++ b/src/server/repo/def.go @@ -11,7 +11,7 @@ type DefRepo struct { } func (r *DefRepo) ListAll() (models []*model.ZdDef) { - r.db.Find(&models) + r.db.Select("id,title,folder,path,updatedAt").Find(&models) return } diff --git a/src/server/repo/excel.go b/src/server/repo/excel.go index 51742237..e02a25a9 100644 --- a/src/server/repo/excel.go +++ b/src/server/repo/excel.go @@ -11,7 +11,7 @@ type ExcelRepo struct { } func (r *ExcelRepo) ListAll() (models []*model.ZdExcel) { - r.db.Find(&models) + r.db.Select("id,title,folder,path,updatedAt").Find(&models) return } diff --git a/src/server/repo/instances.go b/src/server/repo/instances.go index f2f2c032..db559fa6 100644 --- a/src/server/repo/instances.go +++ b/src/server/repo/instances.go @@ -11,7 +11,7 @@ type InstancesRepo struct { } func (r *InstancesRepo) ListAll() (models []*model.ZdInstances) { - r.db.Find(&models) + r.db.Select("id,title,folder,path,updatedAt").Find(&models) return } diff --git a/src/server/repo/ranges.go b/src/server/repo/ranges.go index 70325c11..fad30d5a 100644 --- a/src/server/repo/ranges.go +++ b/src/server/repo/ranges.go @@ -11,7 +11,7 @@ type RangesRepo struct { } func (r *RangesRepo) ListAll() (models []*model.ZdRanges) { - r.db.Find(&models) + r.db.Select("id,title,folder,path,updatedAt").Find(&models) return } diff --git a/src/server/repo/text.go b/src/server/repo/text.go index 0fc0cdc3..47c68b1c 100644 --- a/src/server/repo/text.go +++ b/src/server/repo/text.go @@ -11,7 +11,7 @@ type TextRepo struct { } func (r *TextRepo) ListAll() (models []*model.ZdText) { - r.db.Find(&models) + r.db.Select("id,title,folder,path,updatedAt").Find(&models) return } diff --git a/src/server/service/config.go b/src/server/service/config.go index 0abc9578..a8e58427 100644 --- a/src/server/service/config.go +++ b/src/server/service/config.go @@ -21,12 +21,7 @@ type ConfigService struct { } func (s *ConfigService) List(keywords string, page int) (list []*model.ZdConfig, total int) { - config := s.resService.LoadRes("config") - list, _, _ = s.configRepo.List("", -1) - - s.importResToDB(config, list) list, total, _ = s.configRepo.List(strings.TrimSpace(keywords), page) - return } diff --git a/src/server/service/def.go b/src/server/service/def.go index 994e2b7b..5cf0b306 100644 --- a/src/server/service/def.go +++ b/src/server/service/def.go @@ -52,9 +52,8 @@ func (s *DefService) Create(def *model.ZdDef) (err error) { rootField, err := s.fieldRepo.CreateTreeNode(def.ID, 0, "字段", "root") s.referRepo.CreateDefault(rootField.ID, constant.ResTypeDef) - - s.dataToYaml(def) err = s.defRepo.Update(def) + s.updateYaml(def.ID) return } @@ -69,8 +68,8 @@ func (s *DefService) Update(def *model.ZdDef) (err error) { fileUtils.RemoveExist(old.Path) } - s.dataToYaml(def) err = s.defRepo.Update(def) + s.updateYaml(def.ID) return } @@ -87,17 +86,18 @@ func (s *DefService) Remove(id int) (err error) { return } -func (s *DefService) UpdateYaml(defId uint) (err error) { +func (s *DefService) updateYaml(defId uint) (err error) { var def model.ZdDef def, _ = s.defRepo.Get(defId) - s.dataToYaml(&def) + s.genYaml(&def) err = s.defRepo.UpdateYaml(def) + fileUtils.WriteFile(def.Path, def.Yaml) return } -func (s *DefService) dataToYaml(def *model.ZdDef) (str string) { +func (s *DefService) genYaml(def *model.ZdDef) (str string) { root, err := s.fieldRepo.GetDefFieldTree(def.ID) if err != nil { return @@ -114,7 +114,7 @@ func (s *DefService) dataToYaml(def *model.ZdDef) (str string) { } bytes, err := yaml.Marshal(defData) - def.Yaml = string(bytes) + def.Yaml = stringUtils.ConvertYamlStringToMapFormat(bytes) return } @@ -129,11 +129,13 @@ func (s *DefService) Sync(files []model.ResFile) (err error) { for _, fi := range files { _, found := defMap[fi.Path] - if found { + if !found { // no record + s.SyncToDB(fi) + } else if fi.UpdatedAt.Unix() > defMap[fi.Path].UpdatedAt.Unix() { // db is old s.defRepo.Remove(defMap[fi.Path].ID) - } - if !found || fi.UpdatedAt.Unix() > defMap[fi.Path].UpdatedAt.Unix() { s.SyncToDB(fi) + } else { // db is new + } } @@ -172,10 +174,6 @@ func (s *DefService) SyncToDB(fi model.ResFile) (err error) { return } -func (s *DefService) SyncFromDB(files []model.ResFile) (err error) { - - return -} func NewDefService(defRepo *serverRepo.DefRepo, fieldRepo *serverRepo.FieldRepo, referRepo *serverRepo.ReferRepo) *DefService { diff --git a/src/server/service/excel.go b/src/server/service/excel.go index e00c2bed..e16d6cd0 100644 --- a/src/server/service/excel.go +++ b/src/server/service/excel.go @@ -19,12 +19,7 @@ type ExcelService struct { } func (s *ExcelService) List(keywords string, page int) (list []*model.ZdExcel, total int) { - excel := s.resService.LoadRes("excel") - list, _, _ = s.excelRepo.List("", -1) - - s.importResToDB(excel, list) list, total, _ = s.excelRepo.List(strings.TrimSpace(keywords), page) - return } diff --git a/src/server/service/instances.go b/src/server/service/instances.go index bed4d2cb..c4fab6ab 100644 --- a/src/server/service/instances.go +++ b/src/server/service/instances.go @@ -22,12 +22,7 @@ type InstancesService struct { } func (s *InstancesService) List(keywords string, page int) (list []*model.ZdInstances, total int) { - instances := s.resService.LoadRes("instances") - list, _, _ = s.instancesRepo.List("", -1) - - s.importResToDB(instances, list) list, total, _ = s.instancesRepo.List(strings.TrimSpace(keywords), page) - return } diff --git a/src/server/service/ranges.go b/src/server/service/ranges.go index abe15ea3..ed754f2a 100644 --- a/src/server/service/ranges.go +++ b/src/server/service/ranges.go @@ -21,12 +21,7 @@ type RangesService struct { } func (s *RangesService) List(keywords string, page int) (list []*model.ZdRanges, total int) { - ranges := s.resService.LoadRes("ranges") - list, _, _ = s.rangesRepo.List("", -1) - - s.importResToDB(ranges, list) list, total, _ = s.rangesRepo.List(strings.TrimSpace(keywords), page) - return } diff --git a/src/server/service/sync.go b/src/server/service/sync.go index dfe1398c..7a47246a 100644 --- a/src/server/service/sync.go +++ b/src/server/service/sync.go @@ -26,7 +26,6 @@ func (s *SyncService) SyncData(mode string) { // TODO: overwrite or not } defs := fileMap["yaml"] - s.defService.Sync(defs) } diff --git a/src/server/service/text.go b/src/server/service/text.go index d1cee007..4620595c 100644 --- a/src/server/service/text.go +++ b/src/server/service/text.go @@ -19,10 +19,6 @@ type TextService struct { } func (s *TextService) List(keywords string, page int) (list []*model.ZdText, total int) { - texts := s.resService.LoadRes("text") - list, _, _ = s.textRepo.List("", -1) - - s.importResToDB(texts, list) list, total, _ = s.textRepo.List(strings.TrimSpace(keywords), page) return diff --git a/src/service/article.go b/src/service/article.go index 4e104f2c..6a61c405 100644 --- a/src/service/article.go +++ b/src/service/article.go @@ -5,6 +5,7 @@ import ( "github.com/easysoft/zendata/src/model" constant "github.com/easysoft/zendata/src/utils/const" fileUtils "github.com/easysoft/zendata/src/utils/file" + stringUtils "github.com/easysoft/zendata/src/utils/string" _ "github.com/mattn/go-sqlite3" "gopkg.in/yaml.v3" "path" @@ -76,13 +77,7 @@ func convertSentYaml(filePath, dist string) (yamlPaths []string) { } bytes, _ := yaml.Marshal(&conf) - content := string(bytes) - - // convert yaml format by using a map - m := make(map[string]interface{}) - yaml.Unmarshal([]byte(content), &m) - bytes, _ = yaml.Marshal(&m) - content = string(bytes) + content := stringUtils.ConvertYamlStringToMapFormat(bytes) content = strings.Replace(content, "xfields", "\nfields", -1) yamlPath := fileUtils.AddSepIfNeeded(dist) + diff --git a/src/service/list.go b/src/service/list.go index 0ae158a5..a4a54ff9 100644 --- a/src/service/list.go +++ b/src/service/list.go @@ -149,7 +149,7 @@ func GetFilesAndDirs(pth, typ string, res *map[string][]model.ResFile) { continue } - file := model.ResFile{Path: pth + constant.PthSep + name} + file := model.ResFile{Path: pth + constant.PthSep + name, UpdatedAt: fi.ModTime()} (*res)[typ] = append((*res)[typ], file) } } diff --git a/src/utils/string/string.go b/src/utils/string/string.go index ed5b538c..d28c84a6 100644 --- a/src/utils/string/string.go +++ b/src/utils/string/string.go @@ -12,6 +12,7 @@ import ( "github.com/easysoft/zendata/src/model" constant "github.com/easysoft/zendata/src/utils/const" "github.com/mattn/go-runewidth" + "gopkg.in/yaml.v2" "strconv" "strings" "unicode" @@ -268,3 +269,12 @@ func ReplaceSpecialChars(bytes []byte) []byte { return []byte(ret) } + +func ConvertYamlStringToMapFormat(bytes []byte) (ret string) { + m := yaml.MapSlice{} + yaml.Unmarshal(bytes, &m) + bytesReturn, _ := yaml.Marshal(&m) + ret = string(bytesReturn) + + return +} diff --git a/ui/src/layout/MainLayout.less b/ui/src/layout/MainLayout.less index 75d0347d..6b9cf93b 100644 --- a/ui/src/layout/MainLayout.less +++ b/ui/src/layout/MainLayout.less @@ -15,7 +15,7 @@ h1, h2, h3, h4, h5, h6 { .head { display: flex; .title { - width: 200px; + width: 300px; margin-bottom: 15px; padding: 3px 5px; line-height: 32px; diff --git a/users/test/_test-data.yaml b/users/test/_test-data.yaml deleted file mode 100644 index 6304e62d..00000000 --- a/users/test/_test-data.yaml +++ /dev/null @@ -1,28 +0,0 @@ -title: 数据测试 -desc: - -author: zentao -version: 1.0 - -fields: - - - field: field_with_children # 字段多层嵌套 - fields: - - field: child1 - range: a-z - prefix: part1_ - postfix: '|' - - - field: child2 - range: A-Z - prefix: part2_ - postfix: '|' - - - field: child_with_child - prefix: part3_ - postfix: - fields: - - field: field_grandson - prefix: int_ - range: 10-20 - postfix: -- GitLab