From: Dessalines Date: Wed, 13 Apr 2022 15:33:38 +0000 (-0400) Subject: Fixing unstable post sorts. Fixes #2188 (#2204) X-Git-Url: http://these/git/%7B%60/feeds/static/readmes/%7Bpost.url%7D?a=commitdiff_plain;h=3d8709780a00a0c85f46136b42e937d4aa2a1bfa;p=lemmy.git Fixing unstable post sorts. Fixes #2188 (#2204) --- diff --git a/crates/db_views/src/post_view.rs b/crates/db_views/src/post_view.rs index b9350f8f..a3df66af 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);