Fixing unstable post sorts. Fixes #2188 (#2204)

pull/2210/head
Dessalines 2022-04-13 11:33:38 -04:00 committed by GitHub
parent 0d9b756b75
commit 3d8709780a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 18 additions and 10 deletions

View File

@ -446,21 +446,29 @@ impl<'a> PostQueryBuilder<'a> {
.then_order_by(hot_rank(post_aggregates::score, post_aggregates::published).desc()) .then_order_by(hot_rank(post_aggregates::score, post_aggregates::published).desc())
.then_order_by(post_aggregates::published.desc()), .then_order_by(post_aggregates::published.desc()),
SortType::New => query.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::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 SortType::TopYear => query
.filter(post::published.gt(now - 1.years())) .filter(post_aggregates::published.gt(now - 1.years()))
.then_order_by(post_aggregates::score.desc()), .then_order_by(post_aggregates::score.desc())
.then_order_by(post_aggregates::published.desc()),
SortType::TopMonth => query SortType::TopMonth => query
.filter(post::published.gt(now - 1.months())) .filter(post_aggregates::published.gt(now - 1.months()))
.then_order_by(post_aggregates::score.desc()), .then_order_by(post_aggregates::score.desc())
.then_order_by(post_aggregates::published.desc()),
SortType::TopWeek => query SortType::TopWeek => query
.filter(post::published.gt(now - 1.weeks())) .filter(post_aggregates::published.gt(now - 1.weeks()))
.then_order_by(post_aggregates::score.desc()), .then_order_by(post_aggregates::score.desc())
.then_order_by(post_aggregates::published.desc()),
SortType::TopDay => query SortType::TopDay => query
.filter(post::published.gt(now - 1.days())) .filter(post_aggregates::published.gt(now - 1.days()))
.then_order_by(post_aggregates::score.desc()), .then_order_by(post_aggregates::score.desc())
.then_order_by(post_aggregates::published.desc()),
}; };
let (limit, offset) = limit_and_offset(self.page, self.limit); let (limit, offset) = limit_and_offset(self.page, self.limit);