You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

resource_queue.go 4.1 kB

3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. package models
  2. import (
  3. "code.gitea.io/gitea/modules/timeutil"
  4. "xorm.io/builder"
  5. )
  6. type ResourceQueue struct {
  7. ID int64 `xorm:"pk autoincr"`
  8. QueueCode string
  9. Cluster string `xorm:"notnull"`
  10. AiCenterCode string
  11. ComputeResource string
  12. AccCardType string
  13. CardsTotalNum int
  14. IsAutomaticSync bool
  15. Remark string
  16. CreatedTime timeutil.TimeStamp `xorm:"created"`
  17. CreatedBy int64
  18. UpdatedTime timeutil.TimeStamp `xorm:"updated"`
  19. UpdatedBy int64
  20. }
  21. func (r ResourceQueue) ConvertToRes() *ResourceQueueRes {
  22. return &ResourceQueueRes{
  23. ID: r.ID,
  24. QueueCode: r.QueueCode,
  25. Cluster: r.Cluster,
  26. AiCenterCode: r.AiCenterCode,
  27. ComputeResource: r.ComputeResource,
  28. AccCardType: r.AccCardType,
  29. CardsTotalNum: r.CardsTotalNum,
  30. UpdatedTime: r.UpdatedTime,
  31. Remark: r.Remark,
  32. }
  33. }
  34. type ResourceQueueReq struct {
  35. QueueCode string
  36. Cluster string `binding:"Required"`
  37. AiCenterCode string
  38. ComputeResource string `binding:"Required"`
  39. AccCardType string `binding:"Required"`
  40. CardsTotalNum int
  41. CreatorId int64
  42. IsAutomaticSync bool
  43. Remark string
  44. }
  45. func (r ResourceQueueReq) ToDTO() ResourceQueue {
  46. return ResourceQueue{
  47. QueueCode: r.QueueCode,
  48. Cluster: r.Cluster,
  49. AiCenterCode: r.AiCenterCode,
  50. ComputeResource: r.ComputeResource,
  51. AccCardType: r.AccCardType,
  52. CardsTotalNum: r.CardsTotalNum,
  53. IsAutomaticSync: r.IsAutomaticSync,
  54. Remark: r.Remark,
  55. CreatedBy: r.CreatorId,
  56. UpdatedBy: r.CreatorId,
  57. }
  58. }
  59. type SearchResourceQueueOptions struct {
  60. ListOptions
  61. Cluster string
  62. AiCenterCode string
  63. ComputeResource string
  64. AccCardType string
  65. }
  66. type ResourceQueueListRes struct {
  67. TotalSize int64
  68. List []*ResourceQueueRes
  69. }
  70. type ResourceQueueCodesRes struct {
  71. ID int64
  72. QueueCode string
  73. Cluster string
  74. AiCenterCode string
  75. }
  76. type GetQueueCodesOptions struct {
  77. Cluster string
  78. }
  79. func NewResourceQueueListRes(totalSize int64, list []ResourceQueue) *ResourceQueueListRes {
  80. resList := make([]*ResourceQueueRes, len(list))
  81. for i, v := range list {
  82. resList[i] = v.ConvertToRes()
  83. }
  84. return &ResourceQueueListRes{
  85. TotalSize: totalSize,
  86. List: resList,
  87. }
  88. }
  89. type ResourceQueueRes struct {
  90. ID int64
  91. QueueCode string
  92. Cluster string
  93. AiCenterCode string
  94. ComputeResource string
  95. AccCardType string
  96. CardsTotalNum int
  97. UpdatedTime timeutil.TimeStamp
  98. Remark string
  99. }
  100. func InsertResourceQueue(queue ResourceQueue) (int64, error) {
  101. return x.Insert(&queue)
  102. }
  103. func UpdateResourceQueueById(queueId int64, queue ResourceQueue) (int64, error) {
  104. return x.ID(queueId).Update(&queue)
  105. }
  106. func SearchResourceQueue(opts SearchResourceQueueOptions) (int64, []ResourceQueue, error) {
  107. var cond = builder.NewCond()
  108. if opts.Page <= 0 {
  109. opts.Page = 1
  110. }
  111. if opts.Cluster != "" {
  112. cond = cond.And(builder.Eq{"cluster": opts.Cluster})
  113. }
  114. if opts.AiCenterCode != "" {
  115. cond = cond.And(builder.Eq{"ai_center_code": opts.AiCenterCode})
  116. }
  117. if opts.ComputeResource != "" {
  118. cond = cond.And(builder.Eq{"compute_resource": opts.ComputeResource})
  119. }
  120. if opts.AccCardType != "" {
  121. cond = cond.And(builder.Eq{"acc_card_type": opts.AccCardType})
  122. }
  123. n, err := x.Where(cond).Count(&ResourceQueue{})
  124. if err != nil {
  125. return 0, nil, err
  126. }
  127. r := make([]ResourceQueue, 0)
  128. err = x.Where(cond).Desc("id").Limit(opts.PageSize, (opts.Page-1)*opts.PageSize).Find(&r)
  129. if err != nil {
  130. return 0, nil, err
  131. }
  132. return n, r, nil
  133. }
  134. func GetResourceQueueCodes(opts GetQueueCodesOptions) ([]*ResourceQueueCodesRes, error) {
  135. cond := builder.NewCond()
  136. if opts.Cluster != "" {
  137. cond = cond.And(builder.Eq{"cluster": opts.Cluster})
  138. }
  139. cond = cond.And(builder.NotNull{"queue_code"})
  140. cond = cond.And(builder.Neq{"queue_code": ""})
  141. r := make([]*ResourceQueueCodesRes, 0)
  142. err := x.Table("resource_queue").Where(cond).OrderBy("id desc").Find(&r)
  143. if err != nil {
  144. return nil, err
  145. }
  146. return r, nil
  147. }