fix: get news by query category and tags filters

This commit is contained in:
ericprd
2025-03-07 00:55:50 +08:00
parent e3a9b67e28
commit 51b50a3132
10 changed files with 114 additions and 10 deletions
+15 -4
View File
@@ -2,13 +2,24 @@ package newsrepository
import newsdomain "legalgo-BE-go/internal/domain/news"
func (a *accessor) GetAll() ([]newsdomain.News, error) {
func (a *accessor) GetAll(filter newsdomain.NewsFilter) ([]newsdomain.News, error) {
var news []newsdomain.News
if err := a.db.
query := a.db.
Preload("Tags").
Preload("Categories").
Preload("Author").
Preload("Author")
if filter.Category != "" {
query = query.Joins("JOIN news_categories nc ON nc.news_id = news.id").
Where("nc.category_id = ?", filter.Category)
}
if len(filter.Tags) > 0 {
query = query.Joins("JOIN news_tags nt ON nt.news_id = news.id").
Where("nt.tag_id IN (?)", filter.Tags)
}
if err := query.
Find(&news).Error; err != nil {
return nil, err
}
+1 -1
View File
@@ -10,7 +10,7 @@ type accessor struct {
}
type News interface {
GetAll() ([]newsdomain.News, error)
GetAll(filter newsdomain.NewsFilter) ([]newsdomain.News, error)
GetBySlug(string) (*newsdomain.News, error)
Create(newsdomain.News) error
Update(newsdomain.News) error