From 326782240f4ffd6e6f7b7c39de9372db6d055a6e Mon Sep 17 00:00:00 2001 From: Leon <147289645+LeoninCS@users.noreply.github.com> Date: Tue, 23 Dec 2025 02:22:06 +0800 Subject: [PATCH] =?UTF-8?q?refactor=EF=BC=9A=E4=BF=AE=E6=94=B9=E4=BA=86?= =?UTF-8?q?=E8=BF=87=E5=8E=BBlikecount=E7=9A=84=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/feed/repo.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/internal/feed/repo.go b/internal/feed/repo.go index a57e939..3ec7123 100644 --- a/internal/feed/repo.go +++ b/internal/feed/repo.go @@ -30,13 +30,19 @@ func (repo *FeedRepository) ListLatest(ctx context.Context, limit int, latestBef return videos, nil } -func (repo *FeedRepository) ListLikesCount(ctx context.Context, limit int, likesCountBefore int64) ([]video.Video, error) { +func (repo *FeedRepository) ListLikesCountWithCursor(ctx context.Context, limit int, cursor *LikesCountCursor) ([]video.Video, error) { var videos []video.Video query := repo.db.WithContext(ctx).Model(&video.Video{}). - Order("likes_count DESC") - if likesCountBefore > 0 { - query = query.Where("likes_count < ?", likesCountBefore) + Order("likes_count DESC, id DESC") + + if cursor != nil { + query = query.Where( + "(likes_count < ?) OR (likes_count = ? AND id < ?)", + cursor.LikesCount, + cursor.LikesCount, cursor.ID, + ) } + if err := query.Limit(limit).Find(&videos).Error; err != nil { return nil, err }