github.com/easysoft/zendata@v0.0.0-20240513203326-705bd5a7fd67/internal/server/repo/instances.go (about) 1 package serverRepo 2 3 import ( 4 consts "github.com/easysoft/zendata/internal/pkg/const" 5 "github.com/easysoft/zendata/internal/pkg/domain" 6 "github.com/easysoft/zendata/internal/pkg/model" 7 "gorm.io/gorm" 8 ) 9 10 type InstancesRepo struct { 11 DB *gorm.DB `inject:""` 12 } 13 14 func (r *InstancesRepo) ListAll() (models []*model.ZdInstances) { 15 r.DB.Select("id,title,referName,fileName,folder,path,updatedAt").Find(&models) 16 return 17 } 18 19 func (r *InstancesRepo) List(keywords string, page int) (models []*model.ZdInstances, total int, err error) { 20 query := r.DB.Select("id,title,referName,fileName,folder,path").Order("id ASC") 21 if keywords != "" { 22 query = query.Where("title LIKE ?", "%"+keywords+"%") 23 } 24 if page > 0 { 25 query = query.Offset((page - 1) * consts.PageSize).Limit(consts.PageSize) 26 } 27 28 err = query.Find(&models).Error 29 30 var total64 int64 31 err = r.DB.Model(&model.ZdInstances{}).Count(&total64).Error 32 33 total = int(total64) 34 return 35 } 36 37 func (r *InstancesRepo) Get(id uint) (model model.ZdInstances, err error) { 38 err = r.DB.Where("id=?", id).First(&model).Error 39 return 40 } 41 42 func (r *InstancesRepo) Create(model *model.ZdInstances) (err error) { 43 err = r.DB.Create(model).Error 44 return 45 } 46 func (r *InstancesRepo) Update(model *model.ZdInstances) (err error) { 47 err = r.DB.Save(model).Error 48 return 49 } 50 func (r *InstancesRepo) UpdateYaml(po model.ZdInstances) (err error) { 51 err = r.DB.Model(&model.ZdInstances{}).Where("id=?", po.ID).Update("yaml", po.Yaml).Error 52 return 53 } 54 55 func (r *InstancesRepo) Remove(id uint) (err error) { 56 inst := model.ZdInstances{} 57 inst.ID = id 58 59 err = r.DB.Delete(inst).Error 60 err = r.DB.Where("instancesID = ?", id).Delete(&model.ZdInstancesItem{}).Error 61 62 return 63 } 64 65 func (r *InstancesRepo) GetItems(instancesId uint) (items []*model.ZdInstancesItem, err error) { 66 err = r.DB.Where("instancesId=?", instancesId).Order("parentID ASC, ord ASC").Find(&items).Error 67 return 68 } 69 func (r *InstancesRepo) GetItem(itemId uint) (item model.ZdInstancesItem, err error) { 70 err = r.DB.Where("id=?", itemId).First(&item).Error 71 return 72 } 73 func (r *InstancesRepo) SaveItem(item *model.ZdInstancesItem) (err error) { 74 err = r.DB.Save(item).Error 75 return 76 } 77 func (r *InstancesRepo) UpdateItemRange(rang string, id uint) (err error) { 78 err = r.DB.Model(&model.ZdInstancesItem{}).Where("id=?", id).Update("range", rang).Error 79 80 return 81 } 82 func (r *InstancesRepo) SetIsRange(id uint, b bool) (err error) { 83 err = r.DB.Model(&model.ZdInstancesItem{}). 84 Where("id = ?", id).Update("isRange", b).Error 85 86 return 87 } 88 func (r *InstancesRepo) RemoveItem(id uint) (err error) { 89 item := model.ZdInstancesItem{} 90 item.ID = id 91 err = r.DB.Delete(item).Error 92 return 93 } 94 func (r *InstancesRepo) GetMaxOrder(instancesId int) (ord int) { 95 var preChild model.ZdField 96 err := r.DB. 97 Where("instancesID=?", instancesId). 98 Order("ord DESC").Limit(1). 99 First(&preChild).Error 100 101 if err != nil { 102 ord = 1 103 } 104 ord = preChild.Ord + 1 105 106 return 107 } 108 109 func (r *InstancesRepo) GetItemTree(instancesId uint) (root model.ZdInstancesItem) { 110 items, _ := r.GetItems(instancesId) 111 112 root.ID = 0 113 root.Field = "实例" 114 r.makeTree(items, &root) 115 116 return 117 } 118 119 func (r *InstancesRepo) makeTree(Data []*model.ZdInstancesItem, node *model.ZdInstancesItem) { 120 children, _ := r.haveChild(Data, node) 121 if children != nil { 122 node.Fields = append(node.Fields, children[0:]...) 123 for _, v := range children { 124 _, has := r.haveChild(Data, v) 125 if has { 126 r.makeTree(Data, v) 127 } 128 } 129 } 130 } 131 func (r *InstancesRepo) haveChild(Data []*model.ZdInstancesItem, 132 node *model.ZdInstancesItem) (child []*model.ZdInstancesItem, yes bool) { 133 for _, v := range Data { 134 if v.ParentID == node.ID { 135 child = append(child, v) 136 } 137 } 138 if child != nil { 139 yes = true 140 } 141 return 142 } 143 144 func (r *InstancesRepo) GenInst(po model.ZdInstances, res *domain.ResInstances) { 145 res.Title = po.Title 146 res.Desc = po.Desc 147 } 148 149 func NewInstancesRepo(db *gorm.DB) *InstancesRepo { 150 return &InstancesRepo{DB: db} 151 }