Merge branch 'main' into db-traits-refactor

This commit is contained in:
dullbananas 2023-07-03 10:16:40 -07:00 committed by GitHub
commit 243b777384
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

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