fix: filter active in news
This commit is contained in:
parent
8d7500610e
commit
24f0fe6efa
@ -1,6 +1,16 @@
|
||||
package newsrepository
|
||||
|
||||
import newsdomain "legalgo-BE-go/internal/domain/news"
|
||||
import (
|
||||
newsdomain "legalgo-BE-go/internal/domain/news"
|
||||
timeutils "legalgo-BE-go/internal/utilities/time_utils"
|
||||
)
|
||||
|
||||
type is_active string
|
||||
|
||||
const (
|
||||
active is_active = "true"
|
||||
notActive is_active = "false"
|
||||
)
|
||||
|
||||
func (a *accessor) GetAll(filter newsdomain.NewsFilter) ([]newsdomain.News, error) {
|
||||
var news []newsdomain.News
|
||||
@ -20,6 +30,10 @@ func (a *accessor) GetAll(filter newsdomain.NewsFilter) ([]newsdomain.News, erro
|
||||
Where("nt.tag_id IN (?)", filter.Tags)
|
||||
}
|
||||
|
||||
if filter.Active == string(active) {
|
||||
query = query.Where("news.live_at <= ?", timeutils.Now())
|
||||
}
|
||||
|
||||
query.
|
||||
Select("news.*, COUNT(content_logs.content_id) as clicked").
|
||||
Group("news.id").
|
||||
|
||||
@ -23,8 +23,13 @@ func GetAll(
|
||||
|
||||
category := query.Get("categories")
|
||||
tags := query.Get("tags")
|
||||
activeOnly := query.Get("active")
|
||||
|
||||
news, err = newsSvc.GetAll(category, tags)
|
||||
news, err = newsSvc.GetAll(newsdomain.Filter{
|
||||
Category: category,
|
||||
Tags: tags,
|
||||
Active: activeOnly,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
response.ResponseWithErrorCode(
|
||||
|
||||
@ -51,7 +51,12 @@ type NewsUpdate struct {
|
||||
LiveAt time.Time `json:"live_at"`
|
||||
}
|
||||
|
||||
type Filter struct {
|
||||
Category, Tags, Active string
|
||||
}
|
||||
|
||||
type NewsFilter struct {
|
||||
Tags []string
|
||||
Category []string
|
||||
Active string
|
||||
}
|
||||
|
||||
@ -5,15 +5,15 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
func (i *impl) GetAll(categoriesCode, tagCodes string) ([]newsdomain.News, error) {
|
||||
func (i *impl) GetAll(filter newsdomain.Filter) ([]newsdomain.News, error) {
|
||||
var err error
|
||||
|
||||
categories := []string{}
|
||||
tags := []string{}
|
||||
news := []newsdomain.News{}
|
||||
|
||||
tagCodeArr := strings.Split(tagCodes, " ")
|
||||
categoryCodeArr := strings.Split(categoriesCode, " ")
|
||||
tagCodeArr := strings.Split(filter.Tags, " ")
|
||||
categoryCodeArr := strings.Split(filter.Category, " ")
|
||||
|
||||
if len(tagCodeArr) > 0 && tagCodeArr[0] != "" {
|
||||
tags, err = i.tagRepo.GetIDsByCodes(tagCodeArr)
|
||||
@ -37,9 +37,10 @@ func (i *impl) GetAll(categoriesCode, tagCodes string) ([]newsdomain.News, error
|
||||
}
|
||||
}
|
||||
|
||||
filter := newsdomain.NewsFilter{
|
||||
filterSpec := newsdomain.NewsFilter{
|
||||
Tags: tags,
|
||||
Category: categories,
|
||||
Active: filter.Active,
|
||||
}
|
||||
return i.newsRepo.GetAll(filter)
|
||||
return i.newsRepo.GetAll(filterSpec)
|
||||
}
|
||||
|
||||
@ -16,7 +16,7 @@ type impl struct {
|
||||
}
|
||||
|
||||
type News interface {
|
||||
GetAll(string, string) ([]newsdomain.News, error)
|
||||
GetAll(filter newsdomain.Filter) ([]newsdomain.News, error)
|
||||
GetBySlug(string) (*newsdomain.News, error)
|
||||
Create(newsdomain.NewsReq, string) error
|
||||
Update(string, newsdomain.NewsUpdate) error
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user