keyword_repo.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package store
  2. import "spider/internal/model"
  3. // ListEnabledKeywords returns all enabled keywords (excluding seeds).
  4. func (s *Store) ListEnabledKeywords() ([]model.Keyword, error) {
  5. var keywords []model.Keyword
  6. err := s.DB.Where("enabled = ? AND industry_tag != ?", true, "seed").Find(&keywords).Error
  7. return keywords, err
  8. }
  9. // ListSeeds returns all enabled seed entries (industry_tag = 'seed').
  10. func (s *Store) ListSeeds() ([]model.Keyword, error) {
  11. var seeds []model.Keyword
  12. err := s.DB.Where("enabled = ? AND industry_tag = ?", true, "seed").Find(&seeds).Error
  13. return seeds, err
  14. }
  15. // ListAllKeywords returns all keywords for the given filters, paginated.
  16. func (s *Store) ListAllKeywords(industryTag string, page, pageSize int) ([]model.Keyword, int64, error) {
  17. var keywords []model.Keyword
  18. var total int64
  19. q := s.DB.Model(&model.Keyword{})
  20. if industryTag != "" {
  21. q = q.Where("industry_tag = ?", industryTag)
  22. }
  23. q.Count(&total)
  24. offset := (page - 1) * pageSize
  25. err := q.Order("created_at DESC").Offset(offset).Limit(pageSize).Find(&keywords).Error
  26. return keywords, total, err
  27. }
  28. // CreateKeyword inserts a new keyword. Returns the created record.
  29. func (s *Store) CreateKeyword(k *model.Keyword) error {
  30. return s.DB.Create(k).Error
  31. }
  32. // UpdateKeyword updates a keyword by ID.
  33. func (s *Store) UpdateKeyword(id uint, updates map[string]any) error {
  34. return s.DB.Model(&model.Keyword{}).Where("id = ?", id).Updates(updates).Error
  35. }
  36. // DeleteKeyword deletes a keyword by ID.
  37. func (s *Store) DeleteKeyword(id uint) error {
  38. return s.DB.Delete(&model.Keyword{}, id).Error
  39. }