instances.go 3.5 KB
Newer Older
aaronchen2k2k's avatar
aaronchen2k2k 已提交
1 2 3 4 5
package serverService

import (
	"github.com/easysoft/zendata/src/model"
	"github.com/easysoft/zendata/src/server/repo"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
6
	constant "github.com/easysoft/zendata/src/utils/const"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
7 8
	logUtils "github.com/easysoft/zendata/src/utils/log"
	stringUtils "github.com/easysoft/zendata/src/utils/string"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
9 10
	"gopkg.in/yaml.v3"
	"io/ioutil"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
11 12 13 14
)

type InstancesService struct {
	instancesRepo *serverRepo.InstancesRepo
aaronchen2k2k's avatar
aaronchen2k2k 已提交
15
	referRepo  *serverRepo.ReferRepo
aaronchen2k2k's avatar
aaronchen2k2k 已提交
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
	resService *ResService
}

func (s *InstancesService) List() (list []*model.ZdInstances) {
	instances := s.resService.LoadRes("instances")
	list, _ = s.instancesRepo.List()

	s.saveResToDB(instances, list)
	list, _ = s.instancesRepo.List()

	return
}

func (s *InstancesService) Get(id int) (instances model.ZdInstances) {
	instances, _ = s.instancesRepo.Get(uint(id))

	return
}

func (s *InstancesService) Save(instances *model.ZdInstances) (err error) {
	err = s.instancesRepo.Save(instances)

	return
}

func (s *InstancesService) Remove(id int) (err error) {
	err = s.instancesRepo.Remove(uint(id))
	if err != nil {
		return
	}

	instances, _ := s.instancesRepo.Get(uint(id))
	logUtils.PrintTo(instances.Path)
	//fileUtils.RemoveExist(instances.Path)

	return
}

aaronchen2k2k's avatar
aaronchen2k2k 已提交
54 55 56 57
func (s *InstancesService) GetItemTree(rangesId int) (root model.ZdInstancesItem) {
	items, _ := s.instancesRepo.GetItems(rangesId)

	root.ID = 0
aaronchen2k2k's avatar
aaronchen2k2k 已提交
58
	root.Field = "实例"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
59 60
	for _, item := range items {
		item.ParentID = root.ID
aaronchen2k2k's avatar
aaronchen2k2k 已提交
61
		root.Fields = append(root.Fields, item)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
62 63 64 65 66 67 68 69 70 71
	}

	return
}
func (s *InstancesService) GetItem(id int) (item model.ZdInstancesItem) {
	item, _ = s.instancesRepo.GetItem(uint(id))
	return
}

func (s *InstancesService) CreateItem(domainId, targetId int, mode string) (item *model.ZdInstancesItem, err error) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
72
	item = &model.ZdInstancesItem{Field: "instances_", Note: "", InstancesID: uint(domainId)}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
73 74 75
	item.Ord = s.instancesRepo.GetMaxOrder(domainId)

	err = s.instancesRepo.SaveItem(item)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
76
	s.referRepo.CreateDefault(item.ID, constant.ResTypeInstances)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
77 78 79 80 81 82 83 84 85 86 87 88 89

	return
}
func (s *InstancesService) SaveItem(item *model.ZdInstancesItem) (err error) {
	err = s.instancesRepo.SaveItem(item)
	return
}

func (s *InstancesService) RemoveItem(id int) (err error) {
	err = s.instancesRepo.RemoveItem(uint(id))
	return
}

aaronchen2k2k's avatar
aaronchen2k2k 已提交
90 91 92 93 94 95
func (s *InstancesService) saveResToDB(instances []model.ResFile, list []*model.ZdInstances) (err error) {
	names := make([]string, 0)
	for _, item := range list {
		names = append(names, item.Path)
	}

aaronchen2k2k's avatar
aaronchen2k2k 已提交
96 97
	for _, inst := range instances {
		if !stringUtils.FindInArrBool(inst.Path, names) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
98
			//if strings.Contains(inst.Path, "_test") {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
99 100 101 102 103 104 105 106
				content, _ := ioutil.ReadFile(inst.Path)
				yamlContent := stringUtils.ReplaceSpecialChars(content)
				instPo := model.ZdInstances{}
				err = yaml.Unmarshal(yamlContent, &instPo)
				instPo.Title = inst.Title
				instPo.Name = inst.Name
				instPo.Desc = inst.Desc
				instPo.Path = inst.Path
aaronchen2k2k's avatar
aaronchen2k2k 已提交
107
				instPo.Yaml = string(content)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
108 109 110

				s.instancesRepo.Save(&instPo)

aaronchen2k2k's avatar
aaronchen2k2k 已提交
111 112
				for i, item := range instPo.Instances {
					item.Ord = i + 1
aaronchen2k2k's avatar
aaronchen2k2k 已提交
113 114 115
					s.saveItemToDB(&item, 0, instPo.ID)
				}
			//}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
116 117 118 119 120
		}
	}

	return
}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
121 122 123 124 125 126 127 128 129
func (s *InstancesService) saveItemToDB(item *model.ZdInstancesItem, parentID, instancesID uint) {
	item.InstancesID = instancesID
	item.ParentID = parentID
	s.instancesRepo.SaveItem(item)

	for _, child := range item.Fields {
		s.saveItemToDB(child, item.ID, instancesID)
	}
}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
130

aaronchen2k2k's avatar
aaronchen2k2k 已提交
131 132
func NewInstancesService(instancesRepo *serverRepo.InstancesRepo, referRepo *serverRepo.ReferRepo) *InstancesService {
	return &InstancesService{instancesRepo: instancesRepo, referRepo: referRepo}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
133
}