Make sure comments are sorted by hot_rank, then score.

This commit is contained in:
Dessalines 2023-07-19 12:43:15 -04:00
parent d7051c40f8
commit e0d9dbaa6f
3 changed files with 17 additions and 1 deletions

View file

@ -345,7 +345,9 @@ impl<'a> CommentQuery<'a> {
};
query = match self.sort.unwrap_or(CommentSortType::Hot) {
CommentSortType::Hot => query.then_order_by(comment_aggregates::hot_rank.desc()),
CommentSortType::Hot => query
.then_order_by(comment_aggregates::hot_rank.desc())
.then_order_by(comment_aggregates::score.desc()),
CommentSortType::New => query.then_order_by(comment::published.desc()),
CommentSortType::Old => query.then_order_by(comment::published.asc()),
CommentSortType::Top => query.order_by(comment_aggregates::score.desc()),

View file

@ -0,0 +1,4 @@
drop index idx_comment_aggregates_hot, idx_comment_aggregates_score;
create index idx_comment_aggregates_hot on comment_aggregates (hot_rank desc, published desc);
create index idx_comment_aggregates_score on comment_aggregates (score desc, published desc);

View file

@ -0,0 +1,10 @@
-- Alter the comment_aggregates hot sort to sort by score after hot_rank.
-- Reason being, is that hot_ranks go to zero after a few days,
-- and then comments should be sorted by score, not published.
drop index idx_comment_aggregates_hot, idx_comment_aggregates_score;
create index idx_comment_aggregates_hot on comment_aggregates (hot_rank desc, score desc);
-- Remove published from this sort, its pointless
create index idx_comment_aggregates_score on comment_aggregates (score desc);