package models import ( "code.gitea.io/gitea/modules/timeutil" "xorm.io/builder" ) type ResourceQueue struct { ID int64 `xorm:"pk autoincr"` QueueCode string Cluster string `xorm:"notnull"` AiCenterCode string ComputeResource string AccCardType string CardsTotalNum int IsAutomaticSync bool Remark string CreatedTime timeutil.TimeStamp `xorm:"created"` CreatedBy int64 UpdatedTime timeutil.TimeStamp `xorm:"updated"` UpdatedBy int64 } func (r ResourceQueue) ConvertToRes() *ResourceQueueRes { return &ResourceQueueRes{ ID: r.ID, QueueCode: r.QueueCode, Cluster: r.Cluster, AiCenterCode: r.AiCenterCode, ComputeResource: r.ComputeResource, AccCardType: r.AccCardType, CardsTotalNum: r.CardsTotalNum, UpdatedTime: r.UpdatedTime, Remark: r.Remark, } } type ResourceQueueReq struct { QueueCode string Cluster string `binding:"Required"` AiCenterCode string ComputeResource string `binding:"Required"` AccCardType string `binding:"Required"` CardsTotalNum int CreatorId int64 IsAutomaticSync bool Remark string } func (r ResourceQueueReq) ToDTO() ResourceQueue { return ResourceQueue{ QueueCode: r.QueueCode, Cluster: r.Cluster, AiCenterCode: r.AiCenterCode, ComputeResource: r.ComputeResource, AccCardType: r.AccCardType, CardsTotalNum: r.CardsTotalNum, IsAutomaticSync: r.IsAutomaticSync, Remark: r.Remark, CreatedBy: r.CreatorId, UpdatedBy: r.CreatorId, } } type SearchResourceQueueOptions struct { ListOptions Cluster string AiCenterCode string ComputeResource string AccCardType string } type ResourceQueueListRes struct { TotalSize int64 List []*ResourceQueueRes } func NewResourceQueueListRes(totalSize int64, list []ResourceQueue) *ResourceQueueListRes { resList := make([]*ResourceQueueRes, len(list)) for i, v := range list { resList[i] = v.ConvertToRes() } return &ResourceQueueListRes{ TotalSize: totalSize, List: resList, } } type ResourceQueueRes struct { ID int64 QueueCode string Cluster string AiCenterCode string ComputeResource string AccCardType string CardsTotalNum int UpdatedTime timeutil.TimeStamp Remark string } func InsertResourceQueue(queue ResourceQueue) (int64, error) { return x.Insert(&queue) } func UpdateResourceQueueById(queueId int64, queue ResourceQueue) (int64, error) { return x.ID(queueId).Update(&queue) } func SearchResourceQueue(opts SearchResourceQueueOptions) (int64, []ResourceQueue, error) { var cond = builder.NewCond() if opts.Page <= 0 { opts.Page = 1 } if opts.Cluster != "" { cond = cond.And(builder.Eq{"cluster": opts.Cluster}) } if opts.AiCenterCode != "" { cond = cond.And(builder.Eq{"ai_center_code": opts.AiCenterCode}) } if opts.ComputeResource != "" { cond = cond.And(builder.Eq{"compute_resource": opts.ComputeResource}) } if opts.AccCardType != "" { cond = cond.And(builder.Eq{"acc_card_type": opts.AccCardType}) } n, err := x.Where(cond).Count(&ResourceQueue{}) if err != nil { return 0, nil, err } r := make([]ResourceQueue, 0) err = x.Where(cond).Desc("id").Limit(opts.PageSize, (opts.Page-1)*opts.PageSize).Find(&r) if err != nil { return 0, nil, err } return n, r, nil }