From 01b0cbce3ec529070b62fe5ae2d4905e2ebe9ad9 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sun, 26 Jan 2025 00:38:35 +0800 Subject: [PATCH] :sparkles: Able to filter news by source --- pkg/internal/server/api/news_api.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pkg/internal/server/api/news_api.go b/pkg/internal/server/api/news_api.go index cca6118..f169988 100644 --- a/pkg/internal/server/api/news_api.go +++ b/pkg/internal/server/api/news_api.go @@ -9,15 +9,23 @@ import ( func listNewsArticles(c *fiber.Ctx) error { take := c.QueryInt("take", 0) offset := c.QueryInt("offset", 0) + source := c.Query("source") + + tx := database.C + + if len(source) > 0 { + tx = tx.Where("source = ?", source) + } var count int64 - if err := database.C.Model(&models.NewsArticle{}).Count(&count).Error; err != nil { + countTx := tx + if err := countTx.Model(&models.NewsArticle{}).Count(&count).Error; err != nil { return fiber.NewError(fiber.StatusInternalServerError, err.Error()) } var articles []models.NewsArticle - if err := database.C.Limit(take).Offset(offset). - Omit("Content").Order("created_at DESC"). + if err := tx.Limit(take).Offset(offset). + Omit("Content").Order("COALESCE(published_at, created_at) DESC"). Find(&articles).Error; err != nil { return fiber.NewError(fiber.StatusInternalServerError, err.Error()) }