💄 Optimized the feed

This commit is contained in:
LittleSheep 2025-04-06 14:15:54 +08:00
parent e34f248cfa
commit 6cfa6e8285
2 changed files with 15 additions and 5 deletions
pkg/internal
grpc
services

@ -2,6 +2,7 @@ package grpc
import (
"context"
"time"
iproto "git.solsynth.dev/hypernet/interactive/pkg/proto"
"git.solsynth.dev/hypernet/nexus/pkg/nex"
@ -14,7 +15,11 @@ import (
func (v *Server) GetFeed(_ context.Context, in *iproto.GetFeedRequest) (*iproto.GetFeedResponse, error) {
limit := int(in.GetLimit())
articles, err := services.GetTodayFeedRandomly(limit)
var cursor *time.Time
if in.Cursor != nil {
cursor = lo.ToPtr(time.UnixMilli(int64(in.GetCursor())))
}
articles, err := services.GetTodayFeedRandomly(limit, cursor)
if err != nil {
return nil, status.Error(codes.Internal, err.Error())
}

@ -3,13 +3,18 @@ package services
import (
"git.solsynth.dev/hypernet/reader/pkg/internal/database"
"git.solsynth.dev/hypernet/reader/pkg/internal/models"
"time"
)
func GetTodayFeedRandomly(limit int) ([]models.SubscriptionItem, error) {
func GetTodayFeedRandomly(limit int, cursor *time.Time) ([]models.SubscriptionItem, error) {
tx := database.C
if cursor != nil {
tx = tx.Where("published_at < ?", *cursor)
}
var articles []models.SubscriptionItem
if err := database.C.Limit(limit).
Where("DATE(created_at) = CURRENT_DATE"). // Created in today
Order("RANDOM()").
if err := tx.Limit(limit).
Order("published_at DESC").
Omit("Content").
Preload("Feed").
Find(&articles).Error; err != nil {