29 lines
669 B
Go
Raw Normal View History

2025-03-02 04:36:17 +08:00
package newsrepository
import newsdomain "legalgo-BE-go/internal/domain/news"
func (a *accessor) GetAll(filter newsdomain.NewsFilter) ([]newsdomain.News, error) {
2025-03-02 04:36:17 +08:00
var news []newsdomain.News
query := a.db.
Preload("Tags").
Preload("Categories").
Preload("Author")
2025-03-07 14:30:31 +08:00
if len(filter.Category) > 0 {
query = query.Joins("JOIN news_categories nc ON nc.news_id = news.id").
2025-03-07 14:30:31 +08:00
Where("nc.category_id IN (?)", 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 {
2025-03-02 04:36:17 +08:00
return nil, err
}
return news, nil
}