Adding rest of community sorts. Fixes #3374 (#3376)

* Adding rest of community sorts. Fixes #3374

* Addressing PR comments.
This commit is contained in:
Dessalines 2023-07-03 13:09:15 -04:00 committed by GitHub
parent e1494d4683
commit 935b0bf048
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -133,6 +133,8 @@ pub struct CommunityQuery<'a> {
impl<'a> CommunityQuery<'a> {
pub async fn list(self) -> Result<Vec<CommunityView>, Error> {
use SortType::*;
let conn = &mut get_conn(self.pool).await?;
// The left join below will return None in this case
@ -181,14 +183,22 @@ impl<'a> CommunityQuery<'a> {
.or(community_follower::person_id.eq(person_id_join)),
);
}
match self.sort.unwrap_or(SortType::Hot) {
SortType::New => query = query.order_by(community::published.desc()),
SortType::TopAll => query = query.order_by(community_aggregates::subscribers.desc()),
SortType::TopMonth => query = query.order_by(community_aggregates::users_active_month.desc()),
SortType::Hot => query = query.order_by(community_aggregates::hot_rank.desc()),
// Covers all other sorts
_ => query = query.order_by(community_aggregates::users_active_month.desc()),
match self.sort.unwrap_or(Hot) {
Hot | Active => query = query.order_by(community_aggregates::hot_rank.desc()),
NewComments | TopDay | TopTwelveHour | TopSixHour | TopHour => {
query = query.order_by(community_aggregates::users_active_day.desc())
}
New => query = query.order_by(community::published.desc()),
Old => query = query.order_by(community::published.asc()),
MostComments => query = query.order_by(community_aggregates::comments.desc()),
TopAll | TopYear | TopNineMonths => {
query = query.order_by(community_aggregates::subscribers.desc())
}
TopSixMonths | TopThreeMonths => {
query = query.order_by(community_aggregates::users_active_half_year.desc())
}
TopMonth => query = query.order_by(community_aggregates::users_active_month.desc()),
TopWeek => query = query.order_by(community_aggregates::users_active_week.desc()),
};
if let Some(listing_type) = self.listing_type {