diff --git a/crates/db_schema/src/utils.rs b/crates/db_schema/src/utils.rs index be551a160..213e0015e 100644 --- a/crates/db_schema/src/utils.rs +++ b/crates/db_schema/src/utils.rs @@ -236,7 +236,11 @@ impl LimitDsl for Commented { } pub fn fuzzy_search(q: &str) -> String { - let replaced = q.replace('%', "\\%").replace('_', "\\_").replace(' ', "%"); + let replaced = q + .replace('\\', "\\\\") + .replace('%', "\\%") + .replace('_', "\\_") + .replace(' ', "%"); format!("%{replaced}%") } diff --git a/crates/db_views/src/comment_report_view.rs b/crates/db_views/src/comment_report_view.rs index 37ed6825c..05d95a756 100644 --- a/crates/db_views/src/comment_report_view.rs +++ b/crates/db_views/src/comment_report_view.rs @@ -52,41 +52,6 @@ fn queries<'a>() -> Queries< aliases::person2 .on(comment_report::resolver_id.eq(aliases::person2.field(person::id).nullable())), ) - }; - - let selection = ( - comment_report::all_columns, - comment::all_columns, - post::all_columns, - community::all_columns, - person::all_columns, - aliases::person1.fields(person::all_columns), - comment_aggregates::all_columns, - community_person_ban::community_id.nullable().is_not_null(), - comment_like::score.nullable(), - aliases::person2.fields(person::all_columns).nullable(), - ); - - let read = move |mut conn: DbConn<'a>, (report_id, my_person_id): (CommentReportId, PersonId)| async move { - all_joins( - comment_report::table.find(report_id).into_boxed(), - my_person_id, - ) - .left_join( - community_person_ban::table.on( - community::id - .eq(community_person_ban::community_id) - .and(community_person_ban::person_id.eq(comment::creator_id)), - ), - ) - .select(selection) - .first::(&mut conn) - .await - }; - - let list = move |mut conn: DbConn<'a>, - (options, user): (CommentReportQuery, &'a LocalUserView)| async move { - let mut query = all_joins(comment_report::table.into_boxed(), user.person.id) .left_join( community_person_ban::table.on( community::id @@ -99,7 +64,32 @@ fn queries<'a>() -> Queries< ), ), ) - .select(selection); + .select(( + comment_report::all_columns, + comment::all_columns, + post::all_columns, + community::all_columns, + person::all_columns, + aliases::person1.fields(person::all_columns), + comment_aggregates::all_columns, + community_person_ban::community_id.nullable().is_not_null(), + comment_like::score.nullable(), + aliases::person2.fields(person::all_columns).nullable(), + )) + }; + + let read = move |mut conn: DbConn<'a>, (report_id, my_person_id): (CommentReportId, PersonId)| async move { + all_joins( + comment_report::table.find(report_id).into_boxed(), + my_person_id, + ) + .first::(&mut conn) + .await + }; + + let list = move |mut conn: DbConn<'a>, + (options, user): (CommentReportQuery, &'a LocalUserView)| async move { + let mut query = all_joins(comment_report::table.into_boxed(), user.person.id); if let Some(community_id) = options.community_id { query = query.filter(post::community_id.eq(community_id)); diff --git a/crates/db_views_actor/src/community_view.rs b/crates/db_views_actor/src/community_view.rs index 828738c27..c1cb6eee1 100644 --- a/crates/db_views_actor/src/community_view.rs +++ b/crates/db_views_actor/src/community_view.rs @@ -17,6 +17,7 @@ use lemmy_db_schema::{ community_aggregates, community_block, community_follower, + community_person_ban, instance_block, local_user, }, @@ -58,6 +59,13 @@ fn queries<'a>() -> Queries< .and(community_block::person_id.eq(person_id_join)), ), ) + .left_join( + community_person_ban::table.on( + community::id + .eq(community_person_ban::community_id) + .and(community_person_ban::person_id.eq(person_id_join)), + ), + ) }; let selection = ( @@ -65,6 +73,7 @@ fn queries<'a>() -> Queries< CommunityFollower::select_subscribed_type(), community_block::community_id.nullable().is_not_null(), community_aggregates::all_columns, + community_person_ban::person_id.nullable().is_not_null(), ); let not_removed_or_deleted = community::removed diff --git a/crates/db_views_actor/src/structs.rs b/crates/db_views_actor/src/structs.rs index 46817be78..f25662f7b 100644 --- a/crates/db_views_actor/src/structs.rs +++ b/crates/db_views_actor/src/structs.rs @@ -80,6 +80,7 @@ pub struct CommunityView { pub subscribed: SubscribedType, pub blocked: bool, pub counts: CommunityAggregates, + pub banned_from_community: bool, } #[derive(Debug, Serialize, Deserialize, Clone)]