From: Dessalines Date: Thu, 6 Jul 2023 11:22:48 +0000 (-0400) Subject: Make sure hot rank sorts for post and community filter by positive hot ranks. (#3497) X-Git-Url: http://these/git/%22https:/nerdica.net/%7B%24%7B%60data:application/manifest%20json;base64%2C%24%7Bawait?a=commitdiff_plain;h=6840fd64f9bee9fff263ed797350a316ebdb98c6;p=lemmy.git Make sure hot rank sorts for post and community filter by positive hot ranks. (#3497) * Make sure hot rank sorts for post and community filter by positive hot ranks. - Context #2994 * Adding a comment. --- diff --git a/crates/db_views/src/post_view.rs b/crates/db_views/src/post_view.rs index d1e974d8..07ad40d4 100644 --- a/crates/db_views/src/post_view.rs +++ b/crates/db_views/src/post_view.rs @@ -391,8 +391,14 @@ impl<'a> PostQuery<'a> { } query = match self.sort.unwrap_or(SortType::Hot) { - SortType::Active => query.then_order_by(post_aggregates::hot_rank_active.desc()), - SortType::Hot => query.then_order_by(post_aggregates::hot_rank.desc()), + SortType::Active => query + // Hot ranks fade to zero after a few days, and this filter drastically reduces + // the number of rows needed to be joined to. + .filter(post_aggregates::hot_rank_active.gt(1)) + .then_order_by(post_aggregates::hot_rank_active.desc()), + SortType::Hot => query + .filter(post_aggregates::hot_rank.gt(1)) + .then_order_by(post_aggregates::hot_rank.desc()), SortType::New => query.then_order_by(post_aggregates::published.desc()), SortType::Old => query.then_order_by(post_aggregates::published.asc()), SortType::NewComments => query.then_order_by(post_aggregates::newest_comment_time.desc()), diff --git a/crates/db_views_actor/src/community_view.rs b/crates/db_views_actor/src/community_view.rs index 94bcdaf9..899931c4 100644 --- a/crates/db_views_actor/src/community_view.rs +++ b/crates/db_views_actor/src/community_view.rs @@ -184,7 +184,11 @@ impl<'a> CommunityQuery<'a> { ); } match self.sort.unwrap_or(Hot) { - Hot | Active => query = query.order_by(community_aggregates::hot_rank.desc()), + Hot | Active => { + query = query + .filter(community_aggregates::hot_rank.gt(1)) + .order_by(community_aggregates::hot_rank.desc()) + } NewComments | TopDay | TopTwelveHour | TopSixHour | TopHour => { query = query.order_by(community_aggregates::users_active_day.desc()) }