m_chat_dataset.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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. // NewChatDataset 创建ChatDataset存储实例
  10. func NewChatDataset(db *gorm.DB) *ChatDataset {
  11. return &ChatDataset{db}
  12. }
  13. // ChatDataset ChatDataset存储
  14. type ChatDataset struct {
  15. db *gorm.DB
  16. }
  17. func (a *ChatDataset) getQueryOption(opts ...schema.ChatDatasetQueryOptions) schema.ChatDatasetQueryOptions {
  18. var opt schema.ChatDatasetQueryOptions
  19. if len(opts) > 0 {
  20. opt = opts[0]
  21. }
  22. return opt
  23. }
  24. // Query 查询数据
  25. func (a *ChatDataset) Query(ctx context.Context, params schema.ChatDatasetQueryParam, opts ...schema.ChatDatasetQueryOptions) (*schema.ChatDatasetQueryResult, error) {
  26. db := entity.GetChatDatasetDB(ctx, a.db)
  27. if v := params.ChatAssistantId; v != "" {
  28. db = db.Where("chat_assistant_id=?", v)
  29. }
  30. if v := params.RecordIDs; len(v) > 0 {
  31. db = db.Where("record_id in (?)", v)
  32. }
  33. db = db.Order("id DESC")
  34. opt := a.getQueryOption(opts...)
  35. var list entity.ChatDatasets
  36. pr, err := WrapPageQuery(ctx, db, opt.PageParam, &list)
  37. if err != nil {
  38. return nil, errors.ErrDBServerInternalError
  39. }
  40. qr := &schema.ChatDatasetQueryResult{
  41. PageResult: pr,
  42. Data: list.ToSchemaChatDatasets(),
  43. }
  44. return qr, nil
  45. }
  46. // Get 查询指定数据
  47. func (a *ChatDataset) Get(ctx context.Context, recordID string, opts ...schema.ChatDatasetQueryOptions) (*schema.ChatDataset, error) {
  48. db := entity.GetChatDatasetDB(ctx, a.db).Where("record_id=?", recordID)
  49. var item entity.ChatDataset
  50. ok, err := FindOne(ctx, db, &item)
  51. if err != nil {
  52. return nil, errors.ErrDBServerInternalError
  53. } else if !ok {
  54. return nil, nil
  55. }
  56. return item.ToSchemaChatDataset(), nil
  57. }
  58. // Create 创建数据
  59. func (a *ChatDataset) Create(ctx context.Context, item schema.ChatDataset) error {
  60. ChatDataset := entity.SchemaChatDataset(item).ToChatDataset()
  61. result := entity.GetChatDatasetDB(ctx, a.db).Create(ChatDataset)
  62. if err := result.Error; err != nil {
  63. return errors.ErrDBServerInternalError
  64. }
  65. return nil
  66. }
  67. // Update 更新数据
  68. func (a *ChatDataset) Update(ctx context.Context, recordID string, item schema.ChatDataset) error {
  69. ChatDataset := entity.SchemaChatDataset(item).ToChatDataset()
  70. result := entity.GetChatDatasetDB(ctx, a.db).Where("record_id=?", recordID).Omit("record_id", "creator").Updates(ChatDataset)
  71. if err := result.Error; err != nil {
  72. return errors.ErrDBServerInternalError
  73. }
  74. return nil
  75. }
  76. // Delete 删除数据
  77. func (a *ChatDataset) Delete(ctx context.Context, recordID string) error {
  78. result := entity.GetChatDatasetDB(ctx, a.db).Where("record_id=?", recordID).Delete(entity.ChatDataset{})
  79. if err := result.Error; err != nil {
  80. return errors.ErrDBServerInternalError
  81. }
  82. return nil
  83. }
  84. // UpdateStatus 更新状态
  85. func (a *ChatDataset) UpdateStatus(ctx context.Context, recordID string, status int) error {
  86. result := entity.GetChatDatasetDB(ctx, a.db).Where("record_id=?", recordID).Update("status", status)
  87. if err := result.Error; err != nil {
  88. return errors.ErrDBServerInternalError
  89. }
  90. return nil
  91. }
  92. // DeleteByAssistantId 按助手id删除
  93. func (a *ChatDataset) DeleteByAssistantId(ctx context.Context, assistantId string) error {
  94. result := entity.GetChatDatasetDB(ctx, a.db).Where("chat_assistant_id=?", assistantId).Delete(entity.ChatDataset{})
  95. if err := result.Error; err != nil {
  96. return errors.ErrDBServerInternalError
  97. }
  98. return nil
  99. }