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