feat: update article filter by category

This commit is contained in:
hanif salafi 2025-02-14 17:23:07 +07:00
parent 1035695dcb
commit 69be246c35
1 changed files with 14 additions and 13 deletions

View File

@ -37,37 +37,38 @@ func (_i *articlesRepository) GetAll(req request.ArticlesQueryRequest) (articles
var count int64
query := _i.DB.DB.Model(&entity.Articles{})
query = query.Where("is_active = ?", true)
if req.CategoryId != nil {
query = query.Joins("JOIN article_category_details acd ON acd.article_id = articles.id").
Where("acd.category_id = ?", req.CategoryId)
}
query = query.Where("articles.is_active = ?", true)
if req.Title != nil && *req.Title != "" {
title := strings.ToLower(*req.Title)
query = query.Where("LOWER(title) LIKE ?", "%"+strings.ToLower(title)+"%")
query = query.Where("LOWER(articles.title) LIKE ?", "%"+strings.ToLower(title)+"%")
}
if req.Description != nil && *req.Description != "" {
description := strings.ToLower(*req.Description)
query = query.Where("LOWER(description) LIKE ?", "%"+strings.ToLower(description)+"%")
query = query.Where("LOWER(articles.description) LIKE ?", "%"+strings.ToLower(description)+"%")
}
if req.Tags != nil && *req.Tags != "" {
tags := strings.ToLower(*req.Tags)
query = query.Where("LOWER(tags) LIKE ?", "%"+strings.ToLower(tags)+"%")
}
if req.CategoryId != nil {
query = query.Where("category_id = ?", req.CategoryId)
query = query.Where("LOWER(articles.tags) LIKE ?", "%"+strings.ToLower(tags)+"%")
}
if req.TypeId != nil {
query = query.Where("type_id = ?", req.TypeId)
query = query.Where("articles.type_id = ?", req.TypeId)
}
if req.IsPublish != nil {
query = query.Where("is_publish = ?", req.IsPublish)
query = query.Where("articles.is_publish = ?", req.IsPublish)
}
if req.IsDraft != nil {
query = query.Where("is_draft = ?", req.IsDraft)
query = query.Where("articles.is_draft = ?", req.IsDraft)
}
if req.StatusId != nil {
query = query.Where("status_id = ?", req.StatusId)
query = query.Where("articles.status_id = ?", req.StatusId)
}
if req.CreatedById != nil {
query = query.Where("created_by_id = ?", req.CreatedById)
query = query.Where("articles.created_by_id = ?", req.CreatedById)
}
query.Count(&count)
@ -79,7 +80,7 @@ func (_i *articlesRepository) GetAll(req request.ArticlesQueryRequest) (articles
query.Order(fmt.Sprintf("%s %s", req.Pagination.SortBy, direction))
} else {
direction := "DESC"
sortBy := "created_at"
sortBy := "articles.created_at"
query.Order(fmt.Sprintf("%s %s", sortBy, direction))
}