From 3d8709780a00a0c85f46136b42e937d4aa2a1bfa Mon Sep 17 00:00:00 2001 From: Dessalines Date: Wed, 13 Apr 2022 11:33:38 -0400 Subject: [PATCH] Fixing unstable post sorts. Fixes #2188 (#2204) --- crates/db_views/src/post_view.rs | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/crates/db_views/src/post_view.rs b/crates/db_views/src/post_view.rs index b9350f8fc..a3df66afa 100644 --- a/crates/db_views/src/post_view.rs +++ b/crates/db_views/src/post_view.rs @@ -446,21 +446,29 @@ impl<'a> PostQueryBuilder<'a> { .then_order_by(hot_rank(post_aggregates::score, post_aggregates::published).desc()) .then_order_by(post_aggregates::published.desc()), SortType::New => query.then_order_by(post_aggregates::published.desc()), - SortType::MostComments => query.then_order_by(post_aggregates::comments.desc()), SortType::NewComments => query.then_order_by(post_aggregates::newest_comment_time.desc()), - SortType::TopAll => query.then_order_by(post_aggregates::score.desc()), + SortType::MostComments => query + .then_order_by(post_aggregates::comments.desc()) + .then_order_by(post_aggregates::published.desc()), + SortType::TopAll => query + .then_order_by(post_aggregates::score.desc()) + .then_order_by(post_aggregates::published.desc()), SortType::TopYear => query - .filter(post::published.gt(now - 1.years())) - .then_order_by(post_aggregates::score.desc()), + .filter(post_aggregates::published.gt(now - 1.years())) + .then_order_by(post_aggregates::score.desc()) + .then_order_by(post_aggregates::published.desc()), SortType::TopMonth => query - .filter(post::published.gt(now - 1.months())) - .then_order_by(post_aggregates::score.desc()), + .filter(post_aggregates::published.gt(now - 1.months())) + .then_order_by(post_aggregates::score.desc()) + .then_order_by(post_aggregates::published.desc()), SortType::TopWeek => query - .filter(post::published.gt(now - 1.weeks())) - .then_order_by(post_aggregates::score.desc()), + .filter(post_aggregates::published.gt(now - 1.weeks())) + .then_order_by(post_aggregates::score.desc()) + .then_order_by(post_aggregates::published.desc()), SortType::TopDay => query - .filter(post::published.gt(now - 1.days())) - .then_order_by(post_aggregates::score.desc()), + .filter(post_aggregates::published.gt(now - 1.days())) + .then_order_by(post_aggregates::score.desc()) + .then_order_by(post_aggregates::published.desc()), }; let (limit, offset) = limit_and_offset(self.page, self.limit);