提交 929f3de7 编写于 作者: aaronchen2k2k's avatar aaronchen2k2k

load user data yaml to db

上级 fce1ac53
......@@ -18,6 +18,7 @@ type ZdDef struct {
Desc string `gorm:"column:desc" json:"desc"`
Yaml string `gorm:"yaml" json:"yaml"`
Folder string `gorm:"-" json:"folder" yaml:"-"`
Fields []ZdField `gorm:"-" json:"fields"`
}
func (*ZdDef) TableName() string {
return constant.TablePrefix + "def"
......@@ -54,7 +55,7 @@ type ZdField struct {
Limit int `gorm:"column:limitCol" json:"limitCol"`
Ord int `gorm:"column:ord;default:1" json:"ord"`
Children []*ZdField `gorm:"-" json:"children"`
Fields []*ZdField `gorm:"-" json:"fields"`
Froms []*ZdField `gorm:"-" json:"froms"`
// for range edit
......
......@@ -86,7 +86,7 @@ func (r *FieldRepo) Save(field *model.ZdField) (err error) {
func (r *FieldRepo) makeTree(Data []*model.ZdField, node *model.ZdField) { //参数为父节点,添加父节点的子节点指针切片
children, _ := r.haveChild(Data, node) //判断节点是否有子节点并返回
if children != nil {
node.Children = append(node.Children, children[0:]...) //添加子节点
node.Fields = append(node.Fields, children[0:]...) //添加子节点
for _, v := range children { //查询子节点的子节点,并添加到子节点
_, has := r.haveChild(Data, v)
if has {
......
......@@ -5,7 +5,7 @@ import "github.com/easysoft/zendata/src/model"
func convertToConfModel(treeNode model.ZdField, field *model.DefField) {
genField(treeNode, field)
for _, child := range treeNode.Children {
for _, child := range treeNode.Fields {
defField := model.DefField{}
convertToConfModel(*child, &defField)
......
......@@ -67,6 +67,7 @@ func (s *ConfigService) saveResToDB(config []model.ResFile, list []*model.ZdConf
config.Path = item.Path
config.Field = item.Title
config.Note = item.Desc
config.Yaml = string(content)
s.configRepo.Save(&config)
}
......
......@@ -5,8 +5,10 @@ import (
"github.com/easysoft/zendata/src/server/repo"
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/jinzhu/gorm"
"gopkg.in/yaml.v3"
"io/ioutil"
"strings"
)
......@@ -14,10 +16,15 @@ type DefService struct {
defRepo *serverRepo.DefRepo
fieldRepo *serverRepo.FieldRepo
referRepo *serverRepo.ReferRepo
resService *ResService
}
func (s *DefService) List() (defs []*model.ZdDef) {
defs, _ = s.defRepo.List()
func (s *DefService) List() (list []*model.ZdDef) {
defs := s.resService.LoadRes("yaml")
list, _ = s.defRepo.List()
s.saveDataToDB(defs, list)
list, _ = s.defRepo.List()
return
}
......@@ -100,7 +107,7 @@ func (s *DefService) dataToYaml(def *model.ZdDef) (str string) {
defData := model.DefData{}
s.defRepo.GenDef(*def, &defData)
for _, child := range root.Children { // ignore the root
for _, child := range root.Fields { // ignore the root
defField := model.DefField{}
convertToConfModel(*child, &defField)
......@@ -132,6 +139,47 @@ func (s *DefService) getFolder(pth string) string {
return pth[:idx+1]
}
func NewDefService(defRepo *serverRepo.DefRepo, fieldRepo *serverRepo.FieldRepo, referRepo *serverRepo.ReferRepo) *DefService {
func (s *DefService) saveDataToDB(defs []model.ResFile, list []*model.ZdDef) (err error) {
names := make([]string, 0)
for _, item := range list {
names = append(names, item.Path)
}
for _, def := range defs {
if !stringUtils.FindInArrBool(def.Path, names) {
//if strings.Contains(inst.Path, "_test") {
content, _ := ioutil.ReadFile(def.Path)
yamlContent := stringUtils.ReplaceSpecialChars(content)
defPo := model.ZdDef{}
err = yaml.Unmarshal(yamlContent, &defPo)
defPo.Title = def.Title
defPo.Type = def.ResType
defPo.Desc = def.Desc
defPo.Path = def.Path
defPo.Yaml = string(content)
s.defRepo.Create(&defPo)
for _, field := range defPo.Fields {
s.saveFieldToDB(&field, 0, defPo.ID)
}
//}
}
}
return
}
func (s *DefService) saveFieldToDB(item *model.ZdField, parentID, defID uint) {
item.DefID = defID
item.ParentID = parentID
s.fieldRepo.Save(item)
for _, child := range item.Fields {
s.saveFieldToDB(child, item.ID, defID)
}
}
func NewDefService(defRepo *serverRepo.DefRepo, fieldRepo *serverRepo.FieldRepo,
referRepo *serverRepo.ReferRepo) *DefService {
return &DefService{defRepo: defRepo, fieldRepo: fieldRepo, referRepo: referRepo}
}
......@@ -104,10 +104,12 @@ func (s *InstancesService) saveResToDB(instances []model.ResFile, list []*model.
instPo.Name = inst.Name
instPo.Desc = inst.Desc
instPo.Path = inst.Path
instPo.Yaml = string(content)
s.instancesRepo.Save(&instPo)
for _, item := range instPo.Instances {
for i, item := range instPo.Instances {
item.Ord = i + 1
s.saveItemToDB(&item, 0, instPo.ID)
}
//}
......
......@@ -102,13 +102,17 @@ func (s *RangesService) saveResToDB(ranges []model.ResFile, list []*model.ZdRang
ranges.Path = item.Path
ranges.Field = item.Title
ranges.Note = item.Desc
ranges.Yaml = string(content)
s.rangesRepo.Save(&ranges)
i := 1
for k, v := range ranges.RangeMap {
item := model.ZdRangesItem{Name: k, Value: v}
item.RangesID = ranges.ID
item.Ord = i
s.rangesRepo.SaveItem(&item)
i += 1
}
}
}
......
title: 测试数据
desc:
author: zentao
version: 1.0
fields:
- field: field1
note: 测试
fields:
- field: field1-1
range: 0-9
postfix: ","
- field: field1-2
range: a-z
- field: field2
range: A-Z
title: 国家数据
desc:
author: zentao
version: 1.0
field: country
instances:
- instance: instant1
note: 测试
fields:
- field: field1
note: 测试
fields:
- field: field1-1
range: 0-9
postfix: ","
- field: field1-2
range: a-z
- field: field2
range: A-Z
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册