prompt_config_repository.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package repository
  2. import (
  3. "github.com/2930134478/AI-CS/backend/models"
  4. "gorm.io/gorm"
  5. )
  6. // PromptConfigRepository 提示词配置仓储(按 key 读写)
  7. type PromptConfigRepository struct {
  8. db *gorm.DB
  9. }
  10. // NewPromptConfigRepository 创建仓储实例
  11. func NewPromptConfigRepository(db *gorm.DB) *PromptConfigRepository {
  12. return &PromptConfigRepository{db: db}
  13. }
  14. // Get 按 key 获取一条配置,不存在返回 nil, nil
  15. // 使用反引号包裹 key,避免 MySQL 保留字导致 SQL 语法错误
  16. func (r *PromptConfigRepository) Get(key string) (*models.PromptConfig, error) {
  17. var m models.PromptConfig
  18. err := r.db.Where("`key` = ?", key).First(&m).Error
  19. if err == gorm.ErrRecordNotFound {
  20. return nil, nil
  21. }
  22. if err != nil {
  23. return nil, err
  24. }
  25. return &m, nil
  26. }
  27. // GetAll 获取所有配置(用于管理页展示)
  28. func (r *PromptConfigRepository) GetAll() ([]models.PromptConfig, error) {
  29. var list []models.PromptConfig
  30. err := r.db.Order("`key`").Find(&list).Error
  31. return list, err
  32. }
  33. // Save 按 key 保存或更新(upsert)
  34. func (r *PromptConfigRepository) Save(c *models.PromptConfig) error {
  35. return r.db.Save(c).Error
  36. }