m_robot_dataset.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package model
  2. import (
  3. "context"
  4. "gorm.io/gorm"
  5. "yx-dataset-server/app/errors"
  6. "yx-dataset-server/app/model/entity"
  7. "yx-dataset-server/app/schema"
  8. )
  9. // NewRobotDataset 创建RobotDataset存储实例
  10. func NewRobotDataset(db *gorm.DB) *RobotDataset {
  11. return &RobotDataset{db}
  12. }
  13. // RobotDataset RobotDataset存储
  14. type RobotDataset struct {
  15. db *gorm.DB
  16. }
  17. func (a *RobotDataset) getQueryOption(opts ...schema.RobotDatasetQueryOptions) schema.RobotDatasetQueryOptions {
  18. var opt schema.RobotDatasetQueryOptions
  19. if len(opts) > 0 {
  20. opt = opts[0]
  21. }
  22. return opt
  23. }
  24. // Query 查询数据
  25. func (a *RobotDataset) Query(ctx context.Context, params schema.RobotDatasetQueryParam, opts ...schema.RobotDatasetQueryOptions) (*schema.RobotDatasetQueryResult, error) {
  26. db := entity.GetRobotDatasetDB(ctx, a.db)
  27. if v := params.Code; v != "" {
  28. db = db.Where("code=?", v)
  29. }
  30. if v := params.LikeCode; v != "" {
  31. db = db.Where("code LIKE ?", "%"+v+"%")
  32. }
  33. if v := params.LikeName; v != "" {
  34. db = db.Where("name LIKE ?", "%"+v+"%")
  35. }
  36. if v := params.Status; v > 0 {
  37. db = db.Where("status=?", v)
  38. }
  39. if v := params.RecordIDs; len(v) > 0 {
  40. db = db.Where("record_id in (?)", v)
  41. }
  42. db = db.Order("id DESC")
  43. opt := a.getQueryOption(opts...)
  44. var list entity.RobotDatasets
  45. pr, err := WrapPageQuery(ctx, db, opt.PageParam, &list)
  46. if err != nil {
  47. return nil, errors.ErrDBServerInternalError
  48. }
  49. qr := &schema.RobotDatasetQueryResult{
  50. PageResult: pr,
  51. Data: list.ToSchemaRobotDatasets(),
  52. }
  53. return qr, nil
  54. }
  55. // Get 查询指定数据
  56. func (a *RobotDataset) Get(ctx context.Context, recordID string, opts ...schema.RobotDatasetQueryOptions) (*schema.RobotDataset, error) {
  57. db := entity.GetRobotDatasetDB(ctx, a.db).Where("record_id=?", recordID)
  58. var item entity.RobotDataset
  59. ok, err := FindOne(ctx, db, &item)
  60. if err != nil {
  61. return nil, errors.ErrDBServerInternalError
  62. } else if !ok {
  63. return nil, nil
  64. }
  65. return item.ToSchemaRobotDataset(), nil
  66. }
  67. // Create 创建数据
  68. func (a *RobotDataset) Create(ctx context.Context, item schema.RobotDataset) error {
  69. RobotDataset := entity.SchemaRobotDataset(item).ToRobotDataset()
  70. result := entity.GetRobotDatasetDB(ctx, a.db).Create(RobotDataset)
  71. if err := result.Error; err != nil {
  72. return errors.ErrDBServerInternalError
  73. }
  74. return nil
  75. }
  76. // Update 更新数据
  77. func (a *RobotDataset) Update(ctx context.Context, recordID string, item schema.RobotDataset) error {
  78. RobotDataset := entity.SchemaRobotDataset(item).ToRobotDataset()
  79. result := entity.GetRobotDatasetDB(ctx, a.db).Where("record_id=?", recordID).Omit("record_id", "creator").Updates(RobotDataset)
  80. if err := result.Error; err != nil {
  81. return errors.ErrDBServerInternalError
  82. }
  83. return nil
  84. }
  85. // Delete 删除数据
  86. func (a *RobotDataset) Delete(ctx context.Context, recordID string) error {
  87. result := entity.GetRobotDatasetDB(ctx, a.db).Where("record_id=?", recordID).Delete(entity.RobotDataset{})
  88. if err := result.Error; err != nil {
  89. return errors.ErrDBServerInternalError
  90. }
  91. return nil
  92. }
  93. // UpdateStatus 更新状态
  94. func (a *RobotDataset) UpdateStatus(ctx context.Context, recordID string, status int) error {
  95. result := entity.GetRobotDatasetDB(ctx, a.db).Where("record_id=?", recordID).Update("status", status)
  96. if err := result.Error; err != nil {
  97. return errors.ErrDBServerInternalError
  98. }
  99. return nil
  100. }