X-Git-Url: http://these/git/?a=blobdiff_plain;f=crates%2Fdb_views%2Fsrc%2Fpost_report_view.rs;h=472795b5049a5ab44dd8b4956b603132ae57b8cd;hb=c9f140742925d6da20103124b49f2b58a35fc2b8;hp=1a519fff5483c232cf5b2e83e8106a08826b37e1;hpb=4e6409f325bca5b2727b19c24d77ffa2b59109b1;p=lemmy.git diff --git a/crates/db_views/src/post_report_view.rs b/crates/db_views/src/post_report_view.rs index 1a519fff..472795b5 100644 --- a/crates/db_views/src/post_report_view.rs +++ b/crates/db_views/src/post_report_view.rs @@ -8,8 +8,6 @@ use lemmy_db_schema::{ community_moderator, community_person_ban, person, - person_alias_1, - person_alias_2, post, post_aggregates, post_like, @@ -17,7 +15,7 @@ use lemmy_db_schema::{ }, source::{ community::{Community, CommunityPersonBan, CommunitySafe}, - person::{Person, PersonAlias1, PersonAlias2, PersonSafe, PersonSafeAlias1, PersonSafeAlias2}, + person::{Person, PersonSafe}, post::Post, post_report::PostReport, }, @@ -31,11 +29,11 @@ type PostReportViewTuple = ( Post, CommunitySafe, PersonSafe, - PersonSafeAlias1, + PersonSafe, Option, Option, PostAggregates, - Option, + Option, ); impl PostReportView { @@ -43,10 +41,12 @@ impl PostReportView { /// /// * `report_id` - the report id to obtain pub fn read( - conn: &PgConnection, + conn: &mut PgConnection, report_id: PostReportId, my_person_id: PersonId, ) -> Result { + let (person_alias_1, person_alias_2) = diesel::alias!(person as person1, person as person2); + let ( post_report, post, @@ -62,7 +62,7 @@ impl PostReportView { .inner_join(post::table) .inner_join(community::table.on(post::community_id.eq(community::id))) .inner_join(person::table.on(post_report::creator_id.eq(person::id))) - .inner_join(person_alias_1::table.on(post::creator_id.eq(person_alias_1::id))) + .inner_join(person_alias_1.on(post::creator_id.eq(person_alias_1.field(person::id)))) .left_join( community_person_ban::table.on( post::community_id @@ -84,18 +84,18 @@ impl PostReportView { ) .inner_join(post_aggregates::table.on(post_report::post_id.eq(post_aggregates::post_id))) .left_join( - person_alias_2::table.on(post_report::resolver_id.eq(person_alias_2::id.nullable())), + person_alias_2.on(post_report::resolver_id.eq(person_alias_2.field(person::id).nullable())), ) .select(( post_report::all_columns, post::all_columns, Community::safe_columns_tuple(), Person::safe_columns_tuple(), - PersonAlias1::safe_columns_tuple(), + person_alias_1.fields(Person::safe_columns_tuple()), community_person_ban::all_columns.nullable(), post_like::score.nullable(), post_aggregates::all_columns, - PersonAlias2::safe_columns_tuple().nullable(), + person_alias_2.fields(Person::safe_columns_tuple().nullable()), )) .first::(conn)?; @@ -116,7 +116,7 @@ impl PostReportView { /// returns the current unresolved post report count for the communities you mod pub fn get_report_count( - conn: &PgConnection, + conn: &mut PgConnection, my_person_id: PersonId, admin: bool, community_id: Option, @@ -153,7 +153,7 @@ impl PostReportView { #[builder(field_defaults(default))] pub struct PostReportQuery<'a> { #[builder(!default)] - conn: &'a PgConnection, + conn: &'a mut PgConnection, #[builder(!default)] my_person_id: PersonId, #[builder(!default)] @@ -166,11 +166,13 @@ pub struct PostReportQuery<'a> { impl<'a> PostReportQuery<'a> { pub fn list(self) -> Result, Error> { + let (person_alias_1, person_alias_2) = diesel::alias!(person as person1, person as person2); + let mut query = post_report::table .inner_join(post::table) .inner_join(community::table.on(post::community_id.eq(community::id))) .inner_join(person::table.on(post_report::creator_id.eq(person::id))) - .inner_join(person_alias_1::table.on(post::creator_id.eq(person_alias_1::id))) + .inner_join(person_alias_1.on(post::creator_id.eq(person_alias_1.field(person::id)))) .left_join( community_person_ban::table.on( post::community_id @@ -192,18 +194,20 @@ impl<'a> PostReportQuery<'a> { ) .inner_join(post_aggregates::table.on(post_report::post_id.eq(post_aggregates::post_id))) .left_join( - person_alias_2::table.on(post_report::resolver_id.eq(person_alias_2::id.nullable())), + person_alias_2.on(post_report::resolver_id.eq(person_alias_2.field(person::id).nullable())), ) .select(( post_report::all_columns, post::all_columns, Community::safe_columns_tuple(), Person::safe_columns_tuple(), - PersonAlias1::safe_columns_tuple(), + person_alias_1.fields(Person::safe_columns_tuple()), community_person_ban::all_columns.nullable(), post_like::score.nullable(), post_aggregates::all_columns, - PersonAlias2::safe_columns_tuple().nullable(), + person_alias_2 + .fields(Person::safe_columns_tuple()) + .nullable(), )) .into_boxed(); @@ -280,7 +284,7 @@ mod tests { #[test] #[serial] fn test_crud() { - let conn = establish_unpooled_connection(); + let conn = &mut establish_unpooled_connection(); let new_person = PersonForm { name: "timmy_prv".into(), @@ -288,7 +292,7 @@ mod tests { ..PersonForm::default() }; - let inserted_timmy = Person::create(&conn, &new_person).unwrap(); + let inserted_timmy = Person::create(conn, &new_person).unwrap(); let new_person_2 = PersonForm { name: "sara_prv".into(), @@ -296,7 +300,7 @@ mod tests { ..PersonForm::default() }; - let inserted_sara = Person::create(&conn, &new_person_2).unwrap(); + let inserted_sara = Person::create(conn, &new_person_2).unwrap(); // Add a third person, since new ppl can only report something once. let new_person_3 = PersonForm { @@ -305,7 +309,7 @@ mod tests { ..PersonForm::default() }; - let inserted_jessica = Person::create(&conn, &new_person_3).unwrap(); + let inserted_jessica = Person::create(conn, &new_person_3).unwrap(); let new_community = CommunityForm { name: "test community prv".to_string(), @@ -314,7 +318,7 @@ mod tests { ..CommunityForm::default() }; - let inserted_community = Community::create(&conn, &new_community).unwrap(); + let inserted_community = Community::create(conn, &new_community).unwrap(); // Make timmy a mod let timmy_moderator_form = CommunityModeratorForm { @@ -322,7 +326,7 @@ mod tests { person_id: inserted_timmy.id, }; - let _inserted_moderator = CommunityModerator::join(&conn, &timmy_moderator_form).unwrap(); + let _inserted_moderator = CommunityModerator::join(conn, &timmy_moderator_form).unwrap(); let new_post = PostForm { name: "A test post crv".into(), @@ -331,7 +335,7 @@ mod tests { ..PostForm::default() }; - let inserted_post = Post::create(&conn, &new_post).unwrap(); + let inserted_post = Post::create(conn, &new_post).unwrap(); // sara reports let sara_report_form = PostReportForm { @@ -343,7 +347,7 @@ mod tests { reason: "from sara".into(), }; - let inserted_sara_report = PostReport::report(&conn, &sara_report_form).unwrap(); + let inserted_sara_report = PostReport::report(conn, &sara_report_form).unwrap(); // jessica reports let jessica_report_form = PostReportForm { @@ -355,12 +359,12 @@ mod tests { reason: "from jessica".into(), }; - let inserted_jessica_report = PostReport::report(&conn, &jessica_report_form).unwrap(); + let inserted_jessica_report = PostReport::report(conn, &jessica_report_form).unwrap(); - let agg = PostAggregates::read(&conn, inserted_post.id).unwrap(); + let agg = PostAggregates::read(conn, inserted_post.id).unwrap(); let read_jessica_report_view = - PostReportView::read(&conn, inserted_jessica_report.id, inserted_timmy.id).unwrap(); + PostReportView::read(conn, inserted_jessica_report.id, inserted_timmy.id).unwrap(); let expected_jessica_report_view = PostReportView { post_report: inserted_jessica_report.to_owned(), post: inserted_post.to_owned(), @@ -401,7 +405,7 @@ mod tests { matrix_user_id: None, ban_expires: None, }, - post_creator: PersonSafeAlias1 { + post_creator: PersonSafe { id: inserted_timmy.id, name: inserted_timmy.name.to_owned(), display_name: None, @@ -466,7 +470,7 @@ mod tests { // Do a batch read of timmys reports let reports = PostReportQuery::builder() - .conn(&conn) + .conn(conn) .my_person_id(inserted_timmy.id) .admin(false) .build() @@ -483,13 +487,13 @@ mod tests { // Make sure the counts are correct let report_count = - PostReportView::get_report_count(&conn, inserted_timmy.id, false, None).unwrap(); + PostReportView::get_report_count(conn, inserted_timmy.id, false, None).unwrap(); assert_eq!(2, report_count); // Try to resolve the report - PostReport::resolve(&conn, inserted_jessica_report.id, inserted_timmy.id).unwrap(); + PostReport::resolve(conn, inserted_jessica_report.id, inserted_timmy.id).unwrap(); let read_jessica_report_view_after_resolve = - PostReportView::read(&conn, inserted_jessica_report.id, inserted_timmy.id).unwrap(); + PostReportView::read(conn, inserted_jessica_report.id, inserted_timmy.id).unwrap(); let mut expected_jessica_report_view_after_resolve = expected_jessica_report_view; expected_jessica_report_view_after_resolve @@ -501,7 +505,7 @@ mod tests { expected_jessica_report_view_after_resolve .post_report .updated = read_jessica_report_view_after_resolve.post_report.updated; - expected_jessica_report_view_after_resolve.resolver = Some(PersonSafeAlias2 { + expected_jessica_report_view_after_resolve.resolver = Some(PersonSafe { id: inserted_timmy.id, name: inserted_timmy.name.to_owned(), display_name: None, @@ -530,7 +534,7 @@ mod tests { // Do a batch read of timmys reports // It should only show saras, which is unresolved let reports_after_resolve = PostReportQuery::builder() - .conn(&conn) + .conn(conn) .my_person_id(inserted_timmy.id) .admin(false) .build() @@ -540,12 +544,12 @@ mod tests { // Make sure the counts are correct let report_count_after_resolved = - PostReportView::get_report_count(&conn, inserted_timmy.id, false, None).unwrap(); + PostReportView::get_report_count(conn, inserted_timmy.id, false, None).unwrap(); assert_eq!(1, report_count_after_resolved); - Person::delete(&conn, inserted_timmy.id).unwrap(); - Person::delete(&conn, inserted_sara.id).unwrap(); - Person::delete(&conn, inserted_jessica.id).unwrap(); - Community::delete(&conn, inserted_community.id).unwrap(); + Person::delete(conn, inserted_timmy.id).unwrap(); + Person::delete(conn, inserted_sara.id).unwrap(); + Person::delete(conn, inserted_jessica.id).unwrap(); + Community::delete(conn, inserted_community.id).unwrap(); } }