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  }