From a869a2823b5be33a94341c4f8112ab6827315dd2 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Fri, 26 Feb 2021 08:49:58 -0500 Subject: [PATCH] Still continuing on.... --- crates/api/src/comment.rs | 8 +- crates/api/src/community.rs | 34 +- crates/api/src/lib.rs | 2 +- crates/api/src/post.rs | 12 +- crates/api/src/site.rs | 4 +- crates/api/src/user.rs | 14 +- crates/apub/src/activities/receive/comment.rs | 4 +- crates/apub/src/activities/receive/post.rs | 4 +- crates/apub/src/activities/send/user.rs | 2 +- crates/apub/src/fetcher/community.rs | 2 +- crates/apub/src/inbox/community_inbox.rs | 4 +- .../src/aggregates/comment_aggregates.rs | 64 +-- .../src/aggregates/community_aggregates.rs | 74 ++- crates/db_queries/src/aggregates/mod.rs | 2 +- ...ser_aggregates.rs => person_aggregates.rs} | 94 ++-- .../src/aggregates/post_aggregates.rs | 59 +-- .../src/aggregates/site_aggregates.rs | 35 +- crates/db_queries/src/source/activity.rs | 27 +- crates/db_queries/src/source/comment.rs | 48 +- crates/db_queries/src/source/community.rs | 112 ++--- crates/db_queries/src/source/local_user.rs | 76 +++ crates/db_queries/src/source/mod.rs | 5 +- crates/db_queries/src/source/moderator.rs | 96 ++-- .../src/source/password_reset_request.rs | 30 +- crates/db_queries/src/source/person.rs | 364 ++++++++++++++ .../{user_mention.rs => person_mention.rs} | 110 ++--- crates/db_queries/src/source/post.rs | 58 +-- .../db_queries/src/source/private_message.rs | 38 +- crates/db_queries/src/source/user.rs | 458 ------------------ crates/db_schema/src/schema.rs | 287 ++++++----- crates/db_schema/src/source/comment.rs | 8 +- crates/db_schema/src/source/community.rs | 22 +- crates/db_schema/src/source/local_user.rs | 66 +++ crates/db_schema/src/source/mod.rs | 5 +- crates/db_schema/src/source/moderator.rs | 52 +- .../src/source/password_reset_request.rs | 4 +- crates/db_schema/src/source/person.rs | 154 ++++++ .../{user_mention.rs => person_mention.rs} | 10 +- crates/db_schema/src/source/post.rs | 16 +- crates/db_schema/src/source/user.rs | 220 --------- crates/db_views/src/comment_view.rs | 6 +- crates/db_views/src/post_view.rs | 8 +- .../db_views_actor/src/user_mention_view.rs | 4 +- 43 files changed, 1232 insertions(+), 1470 deletions(-) rename crates/db_queries/src/aggregates/{user_aggregates.rs => person_aggregates.rs} (66%) create mode 100644 crates/db_queries/src/source/local_user.rs create mode 100644 crates/db_queries/src/source/person.rs rename crates/db_queries/src/source/{user_mention.rs => person_mention.rs} (60%) delete mode 100644 crates/db_queries/src/source/user.rs create mode 100644 crates/db_schema/src/source/local_user.rs create mode 100644 crates/db_schema/src/source/person.rs rename crates/db_schema/src/source/{user_mention.rs => person_mention.rs} (66%) delete mode 100644 crates/db_schema/src/source/user.rs diff --git a/crates/api/src/comment.rs b/crates/api/src/comment.rs index 02acc7f8..bd4f33f5 100644 --- a/crates/api/src/comment.rs +++ b/crates/api/src/comment.rs @@ -134,7 +134,7 @@ impl Perform for CreateComment { let like_form = CommentLikeForm { comment_id: inserted_comment.id, post_id, - user_id: user.id, + person_id: user.id, score: 1, }; @@ -375,7 +375,7 @@ impl Perform for RemoveComment { // Mod tables let form = ModRemoveCommentForm { - mod_user_id: user.id, + mod_person_id: user.id, comment_id: data.comment_id, removed: Some(removed), reason: data.reason.to_owned(), @@ -498,7 +498,7 @@ impl Perform for SaveComment { let comment_saved_form = CommentSavedForm { comment_id: data.comment_id, - user_id: user.id, + person_id: user.id, }; if data.save { @@ -559,7 +559,7 @@ impl Perform for CreateCommentLike { let like_form = CommentLikeForm { comment_id: data.comment_id, post_id: orig_comment.post.id, - user_id: user.id, + person_id: user.id, score: data.score, }; diff --git a/crates/api/src/community.rs b/crates/api/src/community.rs index 128d8b30..40dc345e 100644 --- a/crates/api/src/community.rs +++ b/crates/api/src/community.rs @@ -198,7 +198,7 @@ impl Perform for CreateCommunity { // The community creator becomes a moderator let community_moderator_form = CommunityModeratorForm { community_id: inserted_community.id, - user_id: user.id, + person_id: user.id, }; let join = move |conn: &'_ _| CommunityModerator::join(conn, &community_moderator_form); @@ -209,7 +209,7 @@ impl Perform for CreateCommunity { // Follow your own community let community_follower_form = CommunityFollowerForm { community_id: inserted_community.id, - user_id: user.id, + person_id: user.id, pending: false, }; @@ -405,7 +405,7 @@ impl Perform for RemoveCommunity { None => None, }; let form = ModRemoveCommunityForm { - mod_user_id: user.id, + mod_person_id: user.id, community_id: data.community_id, removed: Some(removed), reason: data.reason.to_owned(), @@ -501,7 +501,7 @@ impl Perform for FollowCommunity { .await??; let community_follower_form = CommunityFollowerForm { community_id: data.community_id, - user_id: user.id, + person_id: user.id, pending: false, }; @@ -595,13 +595,13 @@ impl Perform for BanFromCommunity { // Verify that only mods or admins can ban is_mod_or_admin(context.pool(), user.id, community_id).await?; - let community_user_ban_form = CommunityUserBanForm { + let community_user_ban_form = CommunityPersonBanForm { community_id: data.community_id, - user_id: data.user_id, + person_id: data.user_id, }; if data.ban { - let ban = move |conn: &'_ _| CommunityUserBan::ban(conn, &community_user_ban_form); + let ban = move |conn: &'_ _| CommunityPersonBan::ban(conn, &community_user_ban_form); if blocking(context.pool(), ban).await?.is_err() { return Err(ApiError::err("community_user_already_banned").into()); } @@ -609,7 +609,7 @@ impl Perform for BanFromCommunity { // Also unsubscribe them from the community, if they are subscribed let community_follower_form = CommunityFollowerForm { community_id: data.community_id, - user_id: banned_user_id, + person_id: banned_user_id, pending: false, }; blocking(context.pool(), move |conn: &'_ _| { @@ -618,7 +618,7 @@ impl Perform for BanFromCommunity { .await? .ok(); } else { - let unban = move |conn: &'_ _| CommunityUserBan::unban(conn, &community_user_ban_form); + let unban = move |conn: &'_ _| CommunityPersonBan::unban(conn, &community_user_ban_form); if blocking(context.pool(), unban).await?.is_err() { return Err(ApiError::err("community_user_already_banned").into()); } @@ -660,8 +660,8 @@ impl Perform for BanFromCommunity { }; let form = ModBanFromCommunityForm { - mod_user_id: user.id, - other_user_id: data.user_id, + mod_person_id: user.id, + other_person_id: data.user_id, community_id: data.community_id, reason: data.reason.to_owned(), banned: Some(data.ban), @@ -708,7 +708,7 @@ impl Perform for AddModToCommunity { let community_moderator_form = CommunityModeratorForm { community_id: data.community_id, - user_id: data.user_id, + person_id: data.user_id, }; let community_id = data.community_id; @@ -730,8 +730,8 @@ impl Perform for AddModToCommunity { // Mod tables let form = ModAddCommunityForm { - mod_user_id: user.id, - other_user_id: data.user_id, + mod_person_id: user.id, + other_person_id: data.user_id, community_id: data.community_id, removed: Some(!data.added), }; @@ -829,7 +829,7 @@ impl Perform for TransferCommunity { for cmod in &community_mods { let community_moderator_form = CommunityModeratorForm { community_id: cmod.community.id, - user_id: cmod.moderator.id, + person_id: cmod.moderator.id, }; let join = move |conn: &'_ _| CommunityModerator::join(conn, &community_moderator_form); @@ -840,8 +840,8 @@ impl Perform for TransferCommunity { // Mod tables let form = ModAddCommunityForm { - mod_user_id: user.id, - other_user_id: data.user_id, + mod_person_id: user.id, + other_person_id: data.user_id, community_id: data.community_id, removed: Some(false), }; diff --git a/crates/api/src/lib.rs b/crates/api/src/lib.rs index 5642c4b9..ab0bc8ac 100644 --- a/crates/api/src/lib.rs +++ b/crates/api/src/lib.rs @@ -165,7 +165,7 @@ pub(crate) async fn collect_moderated_communities( Ok(vec![community_id]) } else { let ids = blocking(pool, move |conn: &'_ _| { - CommunityModerator::get_user_moderated_communities(conn, user_id) + CommunityModerator::get_person_moderated_communities(conn, user_id) }) .await??; Ok(ids) diff --git a/crates/api/src/post.rs b/crates/api/src/post.rs index 4ef07ae5..33983a4e 100644 --- a/crates/api/src/post.rs +++ b/crates/api/src/post.rs @@ -129,7 +129,7 @@ impl Perform for CreatePost { // They like their own post by default let like_form = PostLikeForm { post_id: inserted_post.id, - user_id: user.id, + person_id: user.id, score: 1, }; @@ -303,7 +303,7 @@ impl Perform for CreatePostLike { let like_form = PostLikeForm { post_id: data.post_id, - user_id: user.id, + person_id: user.id, score: data.score, }; @@ -534,7 +534,7 @@ impl Perform for RemovePost { // Mod tables let form = ModRemovePostForm { - mod_user_id: user.id, + mod_person_id: user.id, post_id: data.post_id, removed: Some(removed), reason: data.reason.to_owned(), @@ -601,7 +601,7 @@ impl Perform for LockPost { // Mod tables let form = ModLockPostForm { - mod_user_id: user.id, + mod_person_id: user.id, post_id: data.post_id, locked: Some(locked), }; @@ -659,7 +659,7 @@ impl Perform for StickyPost { // Mod tables let form = ModStickyPostForm { - mod_user_id: user.id, + mod_person_id: user.id, post_id: data.post_id, stickied: Some(stickied), }; @@ -705,7 +705,7 @@ impl Perform for SavePost { let post_saved_form = PostSavedForm { post_id: data.post_id, - user_id: user.id, + person_id: user.id, }; if data.save { diff --git a/crates/api/src/site.rs b/crates/api/src/site.rs index b545a72e..56f14dea 100644 --- a/crates/api/src/site.rs +++ b/crates/api/src/site.rs @@ -511,8 +511,8 @@ impl Perform for TransferSite { // Mod tables let form = ModAddForm { - mod_user_id: user.id, - other_user_id: data.user_id, + mod_person_id: user.id, + other_person_id: data.user_id, removed: Some(false), }; diff --git a/crates/api/src/user.rs b/crates/api/src/user.rs index c6877fe0..a8f1477f 100644 --- a/crates/api/src/user.rs +++ b/crates/api/src/user.rs @@ -278,7 +278,7 @@ impl Perform for Register { // Sign them up for main community no matter what let community_follower_form = CommunityFollowerForm { community_id: main_community.id, - user_id: inserted_user.id, + person_id: inserted_user.id, pending: false, }; @@ -291,7 +291,7 @@ impl Perform for Register { if no_admins { let community_moderator_form = CommunityModeratorForm { community_id: main_community.id, - user_id: inserted_user.id, + person_id: inserted_user.id, }; let join = move |conn: &'_ _| CommunityModerator::join(conn, &community_moderator_form); @@ -611,8 +611,8 @@ impl Perform for AddAdmin { // Mod tables let form = ModAddForm { - mod_user_id: user.id, - other_user_id: data.user_id, + mod_person_id: user.id, + other_person_id: data.user_id, removed: Some(!data.added), }; @@ -693,8 +693,8 @@ impl Perform for BanUser { }; let form = ModBanForm { - mod_user_id: user.id, - other_user_id: data.user_id, + mod_person_id: user.id, + other_person_id: data.user_id, reason: data.reason.to_owned(), banned: Some(data.ban), expires, @@ -989,7 +989,7 @@ impl Perform for PasswordChange { // Fetch the user_id from the token let token = data.token.clone(); let user_id = blocking(context.pool(), move |conn| { - PasswordResetRequest::read_from_token(conn, &token).map(|p| p.user_id) + PasswordResetRequest::read_from_token(conn, &token).map(|p| p.local_user_id) }) .await??; diff --git a/crates/apub/src/activities/receive/comment.rs b/crates/apub/src/activities/receive/comment.rs index 6136f63b..6d181793 100644 --- a/crates/apub/src/activities/receive/comment.rs +++ b/crates/apub/src/activities/receive/comment.rs @@ -109,7 +109,7 @@ pub(crate) async fn receive_like_comment( let like_form = CommentLikeForm { comment_id, post_id: comment.post_id, - user_id: user.id, + person_id: user.id, score: 1, }; let user_id = user.id; @@ -154,7 +154,7 @@ pub(crate) async fn receive_dislike_comment( let like_form = CommentLikeForm { comment_id, post_id: comment.post_id, - user_id: user.id, + person_id: user.id, score: -1, }; let user_id = user.id; diff --git a/crates/apub/src/activities/receive/post.rs b/crates/apub/src/activities/receive/post.rs index 42635864..4f153004 100644 --- a/crates/apub/src/activities/receive/post.rs +++ b/crates/apub/src/activities/receive/post.rs @@ -80,7 +80,7 @@ pub(crate) async fn receive_like_post( let post_id = post.id; let like_form = PostLikeForm { post_id, - user_id: user.id, + person_id: user.id, score: 1, }; let user_id = user.id; @@ -118,7 +118,7 @@ pub(crate) async fn receive_dislike_post( let post_id = post.id; let like_form = PostLikeForm { post_id, - user_id: user.id, + person_id: user.id, score: -1, }; let user_id = user.id; diff --git a/crates/apub/src/activities/send/user.rs b/crates/apub/src/activities/send/user.rs index 1847ec5c..13ec7340 100644 --- a/crates/apub/src/activities/send/user.rs +++ b/crates/apub/src/activities/send/user.rs @@ -62,7 +62,7 @@ impl ActorType for User_ { let community_follower_form = CommunityFollowerForm { community_id: community.id, - user_id: self.id, + person_id: self.id, pending: true, }; blocking(&context.pool(), move |conn| { diff --git a/crates/apub/src/fetcher/community.rs b/crates/apub/src/fetcher/community.rs index cb9ec865..e1211f33 100644 --- a/crates/apub/src/fetcher/community.rs +++ b/crates/apub/src/fetcher/community.rs @@ -104,7 +104,7 @@ async fn fetch_remote_community( for mod_ in creator_and_moderators { let community_moderator_form = CommunityModeratorForm { community_id, - user_id: mod_.id, + person_id: mod_.id, }; CommunityModerator::join(conn, &community_moderator_form)?; diff --git a/crates/apub/src/inbox/community_inbox.rs b/crates/apub/src/inbox/community_inbox.rs index f9056a77..6a51f9fd 100644 --- a/crates/apub/src/inbox/community_inbox.rs +++ b/crates/apub/src/inbox/community_inbox.rs @@ -191,7 +191,7 @@ async fn handle_follow( let community_follower_form = CommunityFollowerForm { community_id: community.id, - user_id: user.id, + person_id: user.id, pending: false, }; @@ -246,7 +246,7 @@ async fn handle_undo_follow( .await??; let community_follower_form = CommunityFollowerForm { community_id: community.id, - user_id: user.id, + person_id: user.id, pending: false, }; diff --git a/crates/db_queries/src/aggregates/comment_aggregates.rs b/crates/db_queries/src/aggregates/comment_aggregates.rs index a4db471b..9f7d678e 100644 --- a/crates/db_queries/src/aggregates/comment_aggregates.rs +++ b/crates/db_queries/src/aggregates/comment_aggregates.rs @@ -35,35 +35,25 @@ mod tests { comment::{Comment, CommentForm, CommentLike, CommentLikeForm}, community::{Community, CommunityForm}, post::{Post, PostForm}, - user::{UserForm, User_}, + person::{PersonForm, Person}, }; #[test] fn test_crud() { let conn = establish_unpooled_connection(); - let new_user = UserForm { + let new_person = PersonForm { name: "thommy_comment_agg".into(), preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, avatar: None, banner: None, - admin: false, - banned: Some(false), + banned: None, + deleted: None, published: None, updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, actor_id: None, bio: None, - local: true, + local: None, private_key: None, public_key: None, last_refreshed_at: None, @@ -71,30 +61,20 @@ mod tests { shared_inbox_url: None, }; - let inserted_user = User_::create(&conn, &new_user).unwrap(); + let inserted_person = Person::create(&conn, &new_person).unwrap(); - let another_user = UserForm { + let another_person = PersonForm { name: "jerry_comment_agg".into(), preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, avatar: None, banner: None, - admin: false, - banned: Some(false), + banned: None, + deleted: None, published: None, updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, actor_id: None, bio: None, - local: true, + local: None, private_key: None, public_key: None, last_refreshed_at: None, @@ -102,11 +82,11 @@ mod tests { shared_inbox_url: None, }; - let another_inserted_user = User_::create(&conn, &another_user).unwrap(); + let another_inserted_person = Person::create(&conn, &another_person).unwrap(); let new_community = CommunityForm { name: "TIL_comment_agg".into(), - creator_id: inserted_user.id, + creator_id: inserted_person.id, title: "nada".to_owned(), description: None, nsfw: false, @@ -132,7 +112,7 @@ mod tests { name: "A test post".into(), url: None, body: None, - creator_id: inserted_user.id, + creator_id: inserted_person.id, community_id: inserted_community.id, removed: None, deleted: None, @@ -153,7 +133,7 @@ mod tests { let comment_form = CommentForm { content: "A test comment".into(), - creator_id: inserted_user.id, + creator_id: inserted_person.id, post_id: inserted_post.id, removed: None, deleted: None, @@ -169,7 +149,7 @@ mod tests { let child_comment_form = CommentForm { content: "A test comment".into(), - creator_id: inserted_user.id, + creator_id: inserted_person.id, post_id: inserted_post.id, removed: None, deleted: None, @@ -186,7 +166,7 @@ mod tests { let comment_like = CommentLikeForm { comment_id: inserted_comment.id, post_id: inserted_post.id, - user_id: inserted_user.id, + person_id: inserted_person.id, score: 1, }; @@ -198,11 +178,11 @@ mod tests { assert_eq!(1, comment_aggs_before_delete.upvotes); assert_eq!(0, comment_aggs_before_delete.downvotes); - // Add a post dislike from the other user + // Add a post dislike from the other person let comment_dislike = CommentLikeForm { comment_id: inserted_comment.id, post_id: inserted_post.id, - user_id: another_inserted_user.id, + person_id: another_inserted_person.id, score: -1, }; @@ -215,7 +195,7 @@ mod tests { assert_eq!(1, comment_aggs_after_dislike.downvotes); // Remove the first comment like - CommentLike::remove(&conn, inserted_user.id, inserted_comment.id).unwrap(); + CommentLike::remove(&conn, inserted_person.id, inserted_comment.id).unwrap(); let after_like_remove = CommentAggregates::read(&conn, inserted_comment.id).unwrap(); assert_eq!(-1, after_like_remove.score); assert_eq!(0, after_like_remove.upvotes); @@ -229,8 +209,8 @@ mod tests { assert!(after_delete.is_err()); // This should delete all the associated rows, and fire triggers - User_::delete(&conn, another_inserted_user.id).unwrap(); - let user_num_deleted = User_::delete(&conn, inserted_user.id).unwrap(); - assert_eq!(1, user_num_deleted); + Person::delete(&conn, another_inserted_person.id).unwrap(); + let person_num_deleted = Person::delete(&conn, inserted_person.id).unwrap(); + assert_eq!(1, person_num_deleted); } } diff --git a/crates/db_queries/src/aggregates/community_aggregates.rs b/crates/db_queries/src/aggregates/community_aggregates.rs index f5cd577e..159b323e 100644 --- a/crates/db_queries/src/aggregates/community_aggregates.rs +++ b/crates/db_queries/src/aggregates/community_aggregates.rs @@ -39,32 +39,22 @@ mod tests { comment::{Comment, CommentForm}, community::{Community, CommunityFollower, CommunityFollowerForm, CommunityForm}, post::{Post, PostForm}, - user::{UserForm, User_}, + person::{PersonForm, Person}, }; #[test] fn test_crud() { let conn = establish_unpooled_connection(); - let new_user = UserForm { + let new_person = PersonForm { name: "thommy_community_agg".into(), preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, avatar: None, banner: None, - admin: false, banned: Some(false), + deleted: false, published: None, updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, actor_id: None, bio: None, local: true, @@ -75,27 +65,17 @@ mod tests { shared_inbox_url: None, }; - let inserted_user = User_::create(&conn, &new_user).unwrap(); + let inserted_person = Person::create(&conn, &new_person).unwrap(); - let another_user = UserForm { + let another_person = PersonForm { name: "jerry_community_agg".into(), preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, avatar: None, banner: None, - admin: false, banned: Some(false), + deleted: false, published: None, updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, actor_id: None, bio: None, local: true, @@ -106,11 +86,11 @@ mod tests { shared_inbox_url: None, }; - let another_inserted_user = User_::create(&conn, &another_user).unwrap(); + let another_inserted_person = Person::create(&conn, &another_person).unwrap(); let new_community = CommunityForm { name: "TIL_community_agg".into(), - creator_id: inserted_user.id, + creator_id: inserted_person.id, title: "nada".to_owned(), description: None, nsfw: false, @@ -134,7 +114,7 @@ mod tests { let another_community = CommunityForm { name: "TIL_community_agg_2".into(), - creator_id: inserted_user.id, + creator_id: inserted_person.id, title: "nada".to_owned(), description: None, nsfw: false, @@ -156,25 +136,25 @@ mod tests { let another_inserted_community = Community::create(&conn, &another_community).unwrap(); - let first_user_follow = CommunityFollowerForm { + let first_person_follow = CommunityFollowerForm { community_id: inserted_community.id, - user_id: inserted_user.id, + person_id: inserted_person.id, pending: false, }; - CommunityFollower::follow(&conn, &first_user_follow).unwrap(); + CommunityFollower::follow(&conn, &first_person_follow).unwrap(); - let second_user_follow = CommunityFollowerForm { + let second_person_follow = CommunityFollowerForm { community_id: inserted_community.id, - user_id: another_inserted_user.id, + person_id: another_inserted_person.id, pending: false, }; - CommunityFollower::follow(&conn, &second_user_follow).unwrap(); + CommunityFollower::follow(&conn, &second_person_follow).unwrap(); let another_community_follow = CommunityFollowerForm { community_id: another_inserted_community.id, - user_id: inserted_user.id, + person_id: inserted_person.id, pending: false, }; @@ -184,7 +164,7 @@ mod tests { name: "A test post".into(), url: None, body: None, - creator_id: inserted_user.id, + creator_id: inserted_person.id, community_id: inserted_community.id, removed: None, deleted: None, @@ -205,7 +185,7 @@ mod tests { let comment_form = CommentForm { content: "A test comment".into(), - creator_id: inserted_user.id, + creator_id: inserted_person.id, post_id: inserted_post.id, removed: None, deleted: None, @@ -221,7 +201,7 @@ mod tests { let child_comment_form = CommentForm { content: "A test comment".into(), - creator_id: inserted_user.id, + creator_id: inserted_person.id, post_id: inserted_post.id, removed: None, deleted: None, @@ -250,12 +230,12 @@ mod tests { assert_eq!(0, another_community_aggs.comments); // Unfollow test - CommunityFollower::unfollow(&conn, &second_user_follow).unwrap(); + CommunityFollower::unfollow(&conn, &second_person_follow).unwrap(); let after_unfollow = CommunityAggregates::read(&conn, inserted_community.id).unwrap(); assert_eq!(1, after_unfollow.subscribers); // Follow again just for the later tests - CommunityFollower::follow(&conn, &second_user_follow).unwrap(); + CommunityFollower::follow(&conn, &second_person_follow).unwrap(); let after_follow_again = CommunityAggregates::read(&conn, inserted_community.id).unwrap(); assert_eq!(2, after_follow_again.subscribers); @@ -265,14 +245,14 @@ mod tests { assert_eq!(0, after_parent_post_delete.comments); assert_eq!(0, after_parent_post_delete.posts); - // Remove the 2nd user - User_::delete(&conn, another_inserted_user.id).unwrap(); - let after_user_delete = CommunityAggregates::read(&conn, inserted_community.id).unwrap(); - assert_eq!(1, after_user_delete.subscribers); + // Remove the 2nd person + Person::delete(&conn, another_inserted_person.id).unwrap(); + let after_person_delete = CommunityAggregates::read(&conn, inserted_community.id).unwrap(); + assert_eq!(1, after_person_delete.subscribers); // This should delete all the associated rows, and fire triggers - let user_num_deleted = User_::delete(&conn, inserted_user.id).unwrap(); - assert_eq!(1, user_num_deleted); + let person_num_deleted = Person::delete(&conn, inserted_person.id).unwrap(); + assert_eq!(1, person_num_deleted); // Should be none found, since the creator was deleted let after_delete = CommunityAggregates::read(&conn, inserted_community.id); diff --git a/crates/db_queries/src/aggregates/mod.rs b/crates/db_queries/src/aggregates/mod.rs index bdef6591..23854dfd 100644 --- a/crates/db_queries/src/aggregates/mod.rs +++ b/crates/db_queries/src/aggregates/mod.rs @@ -2,4 +2,4 @@ pub mod comment_aggregates; pub mod community_aggregates; pub mod post_aggregates; pub mod site_aggregates; -pub mod user_aggregates; +pub mod person_aggregates; diff --git a/crates/db_queries/src/aggregates/user_aggregates.rs b/crates/db_queries/src/aggregates/person_aggregates.rs similarity index 66% rename from crates/db_queries/src/aggregates/user_aggregates.rs rename to crates/db_queries/src/aggregates/person_aggregates.rs index fcda1d46..ccbba8db 100644 --- a/crates/db_queries/src/aggregates/user_aggregates.rs +++ b/crates/db_queries/src/aggregates/person_aggregates.rs @@ -1,22 +1,22 @@ use diesel::{result::Error, *}; -use lemmy_db_schema::schema::user_aggregates; +use lemmy_db_schema::schema::person_aggregates; use serde::Serialize; #[derive(Queryable, Associations, Identifiable, PartialEq, Debug, Serialize, Clone)] -#[table_name = "user_aggregates"] -pub struct UserAggregates { +#[table_name = "person_aggregates"] +pub struct PersonAggregates { pub id: i32, - pub user_id: i32, + pub person_id: i32, pub post_count: i64, pub post_score: i64, pub comment_count: i64, pub comment_score: i64, } -impl UserAggregates { - pub fn read(conn: &PgConnection, user_id: i32) -> Result { - user_aggregates::table - .filter(user_aggregates::user_id.eq(user_id)) +impl PersonAggregates { + pub fn read(conn: &PgConnection, person_id: i32) -> Result { + person_aggregates::table + .filter(person_aggregates::person_id.eq(person_id)) .first::(conn) } } @@ -24,7 +24,7 @@ impl UserAggregates { #[cfg(test)] mod tests { use crate::{ - aggregates::user_aggregates::UserAggregates, + aggregates::person_aggregates::PersonAggregates, establish_unpooled_connection, Crud, Likeable, @@ -35,32 +35,22 @@ mod tests { comment::{Comment, CommentForm, CommentLike, CommentLikeForm}, community::{Community, CommunityForm}, post::{Post, PostForm, PostLike, PostLikeForm}, - user::{UserForm, User_}, + person::{PersonForm, Person}, }; #[test] fn test_crud() { let conn = establish_unpooled_connection(); - let new_user = UserForm { + let new_person = PersonForm { name: "thommy_user_agg".into(), preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, avatar: None, banner: None, - admin: false, banned: Some(false), + deleted: false, published: None, updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, actor_id: None, bio: None, local: true, @@ -71,27 +61,17 @@ mod tests { shared_inbox_url: None, }; - let inserted_user = User_::create(&conn, &new_user).unwrap(); + let inserted_person = Person::create(&conn, &new_person).unwrap(); - let another_user = UserForm { + let another_person = PersonForm { name: "jerry_user_agg".into(), preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, avatar: None, banner: None, - admin: false, banned: Some(false), + deleted: false, published: None, updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, actor_id: None, bio: None, local: true, @@ -102,11 +82,11 @@ mod tests { shared_inbox_url: None, }; - let another_inserted_user = User_::create(&conn, &another_user).unwrap(); + let another_inserted_person = Person::create(&conn, &another_person).unwrap(); let new_community = CommunityForm { name: "TIL_site_agg".into(), - creator_id: inserted_user.id, + creator_id: inserted_person.id, title: "nada".to_owned(), description: None, nsfw: false, @@ -132,7 +112,7 @@ mod tests { name: "A test post".into(), url: None, body: None, - creator_id: inserted_user.id, + creator_id: inserted_person.id, community_id: inserted_community.id, removed: None, deleted: None, @@ -153,7 +133,7 @@ mod tests { let post_like = PostLikeForm { post_id: inserted_post.id, - user_id: inserted_user.id, + person_id: inserted_person.id, score: 1, }; @@ -161,7 +141,7 @@ mod tests { let comment_form = CommentForm { content: "A test comment".into(), - creator_id: inserted_user.id, + creator_id: inserted_person.id, post_id: inserted_post.id, removed: None, deleted: None, @@ -177,7 +157,7 @@ mod tests { let mut comment_like = CommentLikeForm { comment_id: inserted_comment.id, - user_id: inserted_user.id, + person_id: inserted_person.id, post_id: inserted_post.id, score: 1, }; @@ -186,7 +166,7 @@ mod tests { let mut child_comment_form = CommentForm { content: "A test comment".into(), - creator_id: inserted_user.id, + creator_id: inserted_person.id, post_id: inserted_post.id, removed: None, deleted: None, @@ -202,28 +182,28 @@ mod tests { let child_comment_like = CommentLikeForm { comment_id: inserted_child_comment.id, - user_id: another_inserted_user.id, + person_id: another_inserted_person.id, post_id: inserted_post.id, score: 1, }; let _inserted_child_comment_like = CommentLike::like(&conn, &child_comment_like).unwrap(); - let user_aggregates_before_delete = UserAggregates::read(&conn, inserted_user.id).unwrap(); + let person_aggregates_before_delete = PersonAggregates::read(&conn, inserted_person.id).unwrap(); - assert_eq!(1, user_aggregates_before_delete.post_count); - assert_eq!(1, user_aggregates_before_delete.post_score); - assert_eq!(2, user_aggregates_before_delete.comment_count); - assert_eq!(2, user_aggregates_before_delete.comment_score); + assert_eq!(1, person_aggregates_before_delete.post_count); + assert_eq!(1, person_aggregates_before_delete.post_score); + assert_eq!(2, person_aggregates_before_delete.comment_count); + assert_eq!(2, person_aggregates_before_delete.comment_score); // Remove a post like - PostLike::remove(&conn, inserted_user.id, inserted_post.id).unwrap(); - let after_post_like_remove = UserAggregates::read(&conn, inserted_user.id).unwrap(); + PostLike::remove(&conn, inserted_person.id, inserted_post.id).unwrap(); + let after_post_like_remove = PersonAggregates::read(&conn, inserted_person.id).unwrap(); assert_eq!(0, after_post_like_remove.post_score); // Remove a parent comment (the scores should also be removed) Comment::delete(&conn, inserted_comment.id).unwrap(); - let after_parent_comment_delete = UserAggregates::read(&conn, inserted_user.id).unwrap(); + let after_parent_comment_delete = PersonAggregates::read(&conn, inserted_person.id).unwrap(); assert_eq!(0, after_parent_comment_delete.comment_count); assert_eq!(0, after_parent_comment_delete.comment_score); @@ -233,24 +213,24 @@ mod tests { Comment::create(&conn, &child_comment_form).unwrap(); comment_like.comment_id = new_parent_comment.id; CommentLike::like(&conn, &comment_like).unwrap(); - let after_comment_add = UserAggregates::read(&conn, inserted_user.id).unwrap(); + let after_comment_add = PersonAggregates::read(&conn, inserted_person.id).unwrap(); assert_eq!(2, after_comment_add.comment_count); assert_eq!(1, after_comment_add.comment_score); Post::delete(&conn, inserted_post.id).unwrap(); - let after_post_delete = UserAggregates::read(&conn, inserted_user.id).unwrap(); + let after_post_delete = PersonAggregates::read(&conn, inserted_person.id).unwrap(); assert_eq!(0, after_post_delete.comment_score); assert_eq!(0, after_post_delete.comment_count); assert_eq!(0, after_post_delete.post_score); assert_eq!(0, after_post_delete.post_count); // This should delete all the associated rows, and fire triggers - let user_num_deleted = User_::delete(&conn, inserted_user.id).unwrap(); - assert_eq!(1, user_num_deleted); - User_::delete(&conn, another_inserted_user.id).unwrap(); + let person_num_deleted = Person::delete(&conn, inserted_person.id).unwrap(); + assert_eq!(1, person_num_deleted); + Person::delete(&conn, another_inserted_person.id).unwrap(); // Should be none found - let after_delete = UserAggregates::read(&conn, inserted_user.id); + let after_delete = PersonAggregates::read(&conn, inserted_person.id); assert!(after_delete.is_err()); } } diff --git a/crates/db_queries/src/aggregates/post_aggregates.rs b/crates/db_queries/src/aggregates/post_aggregates.rs index fa8b6925..f272e4f8 100644 --- a/crates/db_queries/src/aggregates/post_aggregates.rs +++ b/crates/db_queries/src/aggregates/post_aggregates.rs @@ -31,40 +31,27 @@ mod tests { aggregates::post_aggregates::PostAggregates, establish_unpooled_connection, Crud, - Likeable, - ListingType, - SortType, }; use lemmy_db_schema::source::{ comment::{Comment, CommentForm}, community::{Community, CommunityForm}, post::{Post, PostForm, PostLike, PostLikeForm}, - user::{UserForm, User_}, + person::{PersonForm, Person}, }; #[test] fn test_crud() { let conn = establish_unpooled_connection(); - let new_user = UserForm { + let new_person = PersonForm { name: "thommy_community_agg".into(), preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, avatar: None, banner: None, - admin: false, banned: Some(false), + deleted: false, published: None, updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, actor_id: None, bio: None, local: true, @@ -75,27 +62,17 @@ mod tests { shared_inbox_url: None, }; - let inserted_user = User_::create(&conn, &new_user).unwrap(); + let inserted_person = Person::create(&conn, &new_person).unwrap(); - let another_user = UserForm { + let another_person = PersonForm { name: "jerry_community_agg".into(), preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, avatar: None, banner: None, - admin: false, banned: Some(false), + deleted: false, published: None, updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, actor_id: None, bio: None, local: true, @@ -106,11 +83,11 @@ mod tests { shared_inbox_url: None, }; - let another_inserted_user = User_::create(&conn, &another_user).unwrap(); + let another_inserted_person = Person::create(&conn, &another_person).unwrap(); let new_community = CommunityForm { name: "TIL_community_agg".into(), - creator_id: inserted_user.id, + creator_id: inserted_person.id, title: "nada".to_owned(), description: None, nsfw: false, @@ -136,7 +113,7 @@ mod tests { name: "A test post".into(), url: None, body: None, - creator_id: inserted_user.id, + creator_id: inserted_person.id, community_id: inserted_community.id, removed: None, deleted: None, @@ -157,7 +134,7 @@ mod tests { let comment_form = CommentForm { content: "A test comment".into(), - creator_id: inserted_user.id, + creator_id: inserted_person.id, post_id: inserted_post.id, removed: None, deleted: None, @@ -173,7 +150,7 @@ mod tests { let child_comment_form = CommentForm { content: "A test comment".into(), - creator_id: inserted_user.id, + creator_id: inserted_person.id, post_id: inserted_post.id, removed: None, deleted: None, @@ -189,7 +166,7 @@ mod tests { let post_like = PostLikeForm { post_id: inserted_post.id, - user_id: inserted_user.id, + person_id: inserted_person.id, score: 1, }; @@ -202,10 +179,10 @@ mod tests { assert_eq!(1, post_aggs_before_delete.upvotes); assert_eq!(0, post_aggs_before_delete.downvotes); - // Add a post dislike from the other user + // Add a post dislike from the other person let post_dislike = PostLikeForm { post_id: inserted_post.id, - user_id: another_inserted_user.id, + person_id: another_inserted_person.id, score: -1, }; @@ -227,7 +204,7 @@ mod tests { assert_eq!(1, after_comment_delete.downvotes); // Remove the first post like - PostLike::remove(&conn, inserted_user.id, inserted_post.id).unwrap(); + PostLike::remove(&conn, inserted_person.id, inserted_post.id).unwrap(); let after_like_remove = PostAggregates::read(&conn, inserted_post.id).unwrap(); assert_eq!(0, after_like_remove.comments); assert_eq!(-1, after_like_remove.score); @@ -235,9 +212,9 @@ mod tests { assert_eq!(1, after_like_remove.downvotes); // This should delete all the associated rows, and fire triggers - User_::delete(&conn, another_inserted_user.id).unwrap(); - let user_num_deleted = User_::delete(&conn, inserted_user.id).unwrap(); - assert_eq!(1, user_num_deleted); + Person::delete(&conn, another_inserted_person.id).unwrap(); + let person_num_deleted = Person::delete(&conn, inserted_person.id).unwrap(); + assert_eq!(1, person_num_deleted); // Should be none found, since the creator was deleted let after_delete = PostAggregates::read(&conn, inserted_post.id); diff --git a/crates/db_queries/src/aggregates/site_aggregates.rs b/crates/db_queries/src/aggregates/site_aggregates.rs index 46db2f0c..2f33b507 100644 --- a/crates/db_queries/src/aggregates/site_aggregates.rs +++ b/crates/db_queries/src/aggregates/site_aggregates.rs @@ -28,41 +28,28 @@ mod tests { use crate::{ aggregates::site_aggregates::SiteAggregates, establish_unpooled_connection, - Crud, - ListingType, - SortType, }; use lemmy_db_schema::source::{ comment::{Comment, CommentForm}, community::{Community, CommunityForm}, post::{Post, PostForm}, site::{Site, SiteForm}, - user::{UserForm, User_}, + person::{PersonForm, Person}, }; #[test] fn test_crud() { let conn = establish_unpooled_connection(); - let new_user = UserForm { + let new_person = PersonForm { name: "thommy_site_agg".into(), preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, avatar: None, banner: None, - admin: false, banned: Some(false), + deleted: false, published: None, updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, actor_id: None, bio: None, local: true, @@ -73,14 +60,14 @@ mod tests { shared_inbox_url: None, }; - let inserted_user = User_::create(&conn, &new_user).unwrap(); + let inserted_person = Person::create(&conn, &new_person).unwrap(); let site_form = SiteForm { name: "test_site".into(), description: None, icon: None, banner: None, - creator_id: inserted_user.id, + creator_id: inserted_person.id, enable_downvotes: true, open_registration: true, enable_nsfw: true, @@ -91,7 +78,7 @@ mod tests { let new_community = CommunityForm { name: "TIL_site_agg".into(), - creator_id: inserted_user.id, + creator_id: inserted_person.id, title: "nada".to_owned(), description: None, nsfw: false, @@ -117,7 +104,7 @@ mod tests { name: "A test post".into(), url: None, body: None, - creator_id: inserted_user.id, + creator_id: inserted_person.id, community_id: inserted_community.id, removed: None, deleted: None, @@ -140,7 +127,7 @@ mod tests { let comment_form = CommentForm { content: "A test comment".into(), - creator_id: inserted_user.id, + creator_id: inserted_person.id, post_id: inserted_post.id, removed: None, deleted: None, @@ -157,7 +144,7 @@ mod tests { let child_comment_form = CommentForm { content: "A test comment".into(), - creator_id: inserted_user.id, + creator_id: inserted_person.id, post_id: inserted_post.id, removed: None, deleted: None, @@ -185,8 +172,8 @@ mod tests { assert_eq!(0, site_aggregates_after_post_delete.comments); // This shouuld delete all the associated rows, and fire triggers - let user_num_deleted = User_::delete(&conn, inserted_user.id).unwrap(); - assert_eq!(1, user_num_deleted); + let person_num_deleted = Person::delete(&conn, inserted_person.id).unwrap(); + assert_eq!(1, person_num_deleted); let after_delete = SiteAggregates::read(&conn); assert!(after_delete.is_err()); diff --git a/crates/db_queries/src/source/activity.rs b/crates/db_queries/src/source/activity.rs index 59e1754a..7c00681e 100644 --- a/crates/db_queries/src/source/activity.rs +++ b/crates/db_queries/src/source/activity.rs @@ -124,13 +124,10 @@ mod tests { use crate::{ establish_unpooled_connection, source::activity::Activity_, - Crud, - ListingType, - SortType, }; use lemmy_db_schema::source::{ activity::{Activity, ActivityForm}, - user::{UserForm, User_}, + person::{PersonForm, Person}, }; use serde_json::Value; @@ -138,28 +135,18 @@ mod tests { fn test_crud() { let conn = establish_unpooled_connection(); - let creator_form = UserForm { + let creator_form = PersonForm { name: "activity_creator_pm".into(), preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, avatar: None, banner: None, - admin: false, - banned: Some(false), + banned: None, + deleted: None, published: None, updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, actor_id: None, bio: None, - local: true, + local: None, private_key: None, public_key: None, last_refreshed_at: None, @@ -167,7 +154,7 @@ mod tests { shared_inbox_url: None, }; - let inserted_creator = User_::create(&conn, &creator_form).unwrap(); + let inserted_creator = Person::create(&conn, &creator_form).unwrap(); let ap_id = "https://enterprise.lemmy.ml/activities/delete/f1b5d57c-80f8-4e03-a615-688d552e946c"; @@ -207,7 +194,7 @@ mod tests { let read_activity = Activity::read(&conn, inserted_activity.id).unwrap(); let read_activity_by_apub_id = Activity::read_from_apub_id(&conn, ap_id).unwrap(); - User_::delete(&conn, inserted_creator.id).unwrap(); + Person::delete(&conn, inserted_creator.id).unwrap(); Activity::delete(&conn, inserted_activity.id).unwrap(); assert_eq!(expected_activity, read_activity); diff --git a/crates/db_queries/src/source/comment.rs b/crates/db_queries/src/source/comment.rs index 709a8aa3..583a59e6 100644 --- a/crates/db_queries/src/source/comment.rs +++ b/crates/db_queries/src/source/comment.rs @@ -166,17 +166,17 @@ impl Likeable for CommentLike { use lemmy_db_schema::schema::comment_like::dsl::*; insert_into(comment_like) .values(comment_like_form) - .on_conflict((comment_id, user_id)) + .on_conflict((comment_id, person_id)) .do_update() .set(comment_like_form) .get_result::(conn) } - fn remove(conn: &PgConnection, user_id: i32, comment_id: i32) -> Result { + fn remove(conn: &PgConnection, person_id: i32, comment_id: i32) -> Result { use lemmy_db_schema::schema::comment_like::dsl; diesel::delete( dsl::comment_like .filter(dsl::comment_id.eq(comment_id)) - .filter(dsl::user_id.eq(user_id)), + .filter(dsl::person_id.eq(person_id)), ) .execute(conn) } @@ -197,7 +197,7 @@ impl Saveable for CommentSaved { diesel::delete( comment_saved .filter(comment_id.eq(comment_saved_form.comment_id)) - .filter(user_id.eq(comment_saved_form.user_id)), + .filter(user_id.eq(comment_saved_form.person_id)), ) .execute(conn) } @@ -210,32 +210,22 @@ mod tests { comment::*, community::{Community, CommunityForm}, post::*, - user::{UserForm, User_}, + person::{PersonForm, Person}, }; #[test] fn test_crud() { let conn = establish_unpooled_connection(); - let new_user = UserForm { + let new_person = PersonForm { name: "terry".into(), preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, avatar: None, banner: None, - admin: false, banned: Some(false), + deleted: false, published: None, updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, actor_id: None, bio: None, local: true, @@ -246,13 +236,13 @@ mod tests { shared_inbox_url: None, }; - let inserted_user = User_::create(&conn, &new_user).unwrap(); + let inserted_persod = Person::create(&conn, &new_person).unwrap(); let new_community = CommunityForm { name: "test community".to_string(), title: "nada".to_owned(), description: None, - creator_id: inserted_user.id, + creator_id: inserted_persod.id, removed: None, deleted: None, updated: None, @@ -274,7 +264,7 @@ mod tests { let new_post = PostForm { name: "A test post".into(), - creator_id: inserted_user.id, + creator_id: inserted_persod.id, url: None, body: None, community_id: inserted_community.id, @@ -297,7 +287,7 @@ mod tests { let comment_form = CommentForm { content: "A test comment".into(), - creator_id: inserted_user.id, + creator_id: inserted_persod.id, post_id: inserted_post.id, removed: None, deleted: None, @@ -314,7 +304,7 @@ mod tests { let expected_comment = Comment { id: inserted_comment.id, content: "A test comment".into(), - creator_id: inserted_user.id, + creator_id: inserted_persod.id, post_id: inserted_post.id, removed: false, deleted: false, @@ -328,7 +318,7 @@ mod tests { let child_comment_form = CommentForm { content: "A child comment".into(), - creator_id: inserted_user.id, + creator_id: inserted_persod.id, post_id: inserted_post.id, parent_id: Some(inserted_comment.id), removed: None, @@ -346,7 +336,7 @@ mod tests { let comment_like_form = CommentLikeForm { comment_id: inserted_comment.id, post_id: inserted_post.id, - user_id: inserted_user.id, + person_id: inserted_persod.id, score: 1, }; @@ -356,7 +346,7 @@ mod tests { id: inserted_comment_like.id, comment_id: inserted_comment.id, post_id: inserted_post.id, - user_id: inserted_user.id, + person_id: inserted_persod.id, published: inserted_comment_like.published, score: 1, }; @@ -364,7 +354,7 @@ mod tests { // Comment Saved let comment_saved_form = CommentSavedForm { comment_id: inserted_comment.id, - user_id: inserted_user.id, + person_id: inserted_persod.id, }; let inserted_comment_saved = CommentSaved::save(&conn, &comment_saved_form).unwrap(); @@ -372,19 +362,19 @@ mod tests { let expected_comment_saved = CommentSaved { id: inserted_comment_saved.id, comment_id: inserted_comment.id, - user_id: inserted_user.id, + person_id: inserted_persod.id, published: inserted_comment_saved.published, }; let read_comment = Comment::read(&conn, inserted_comment.id).unwrap(); let updated_comment = Comment::update(&conn, inserted_comment.id, &comment_form).unwrap(); - let like_removed = CommentLike::remove(&conn, inserted_user.id, inserted_comment.id).unwrap(); + let like_removed = CommentLike::remove(&conn, inserted_persod.id, inserted_comment.id).unwrap(); let saved_removed = CommentSaved::unsave(&conn, &comment_saved_form).unwrap(); let num_deleted = Comment::delete(&conn, inserted_comment.id).unwrap(); Comment::delete(&conn, inserted_child_comment.id).unwrap(); Post::delete(&conn, inserted_post.id).unwrap(); Community::delete(&conn, inserted_community.id).unwrap(); - User_::delete(&conn, inserted_user.id).unwrap(); + Person::delete(&conn, inserted_persod.id).unwrap(); assert_eq!(expected_comment, read_comment); assert_eq!(expected_comment, inserted_comment); diff --git a/crates/db_queries/src/source/community.rs b/crates/db_queries/src/source/community.rs index 08421bd5..2b61d312 100644 --- a/crates/db_queries/src/source/community.rs +++ b/crates/db_queries/src/source/community.rs @@ -9,8 +9,8 @@ use lemmy_db_schema::{ CommunityForm, CommunityModerator, CommunityModeratorForm, - CommunityUserBan, - CommunityUserBanForm, + CommunityPersonBan, + CommunityPersonBanForm, }, Url, }; @@ -206,23 +206,23 @@ impl Community_ for Community { impl Joinable for CommunityModerator { fn join( conn: &PgConnection, - community_user_form: &CommunityModeratorForm, + community_moderator_form: &CommunityModeratorForm, ) -> Result { use lemmy_db_schema::schema::community_moderator::dsl::*; insert_into(community_moderator) - .values(community_user_form) + .values(community_moderator_form) .get_result::(conn) } fn leave( conn: &PgConnection, - community_user_form: &CommunityModeratorForm, + community_moderator_form: &CommunityModeratorForm, ) -> Result { use lemmy_db_schema::schema::community_moderator::dsl::*; diesel::delete( community_moderator - .filter(community_id.eq(community_user_form.community_id)) - .filter(user_id.eq(community_user_form.user_id)), + .filter(community_id.eq(community_moderator_form.community_id)) + .filter(person_id.eq(community_moderator_form.person_id)), ) .execute(conn) } @@ -230,9 +230,9 @@ impl Joinable for CommunityModerator { pub trait CommunityModerator_ { fn delete_for_community(conn: &PgConnection, for_community_id: i32) -> Result; - fn get_user_moderated_communities( + fn get_person_moderated_communities( conn: &PgConnection, - for_user_id: i32, + for_person_id: i32, ) -> Result, Error>; } @@ -242,38 +242,38 @@ impl CommunityModerator_ for CommunityModerator { diesel::delete(community_moderator.filter(community_id.eq(for_community_id))).execute(conn) } - fn get_user_moderated_communities( + fn get_person_moderated_communities( conn: &PgConnection, - for_user_id: i32, + for_person_id: i32, ) -> Result, Error> { use lemmy_db_schema::schema::community_moderator::dsl::*; community_moderator - .filter(user_id.eq(for_user_id)) + .filter(person_id.eq(for_person_id)) .select(community_id) .load::(conn) } } -impl Bannable for CommunityUserBan { +impl Bannable for CommunityPersonBan { fn ban( conn: &PgConnection, - community_user_ban_form: &CommunityUserBanForm, + community_person_ban_form: &CommunityPersonBanForm, ) -> Result { - use lemmy_db_schema::schema::community_user_ban::dsl::*; - insert_into(community_user_ban) - .values(community_user_ban_form) + use lemmy_db_schema::schema::community_person_ban::dsl::*; + insert_into(community_person_ban) + .values(community_person_ban_form) .get_result::(conn) } fn unban( conn: &PgConnection, - community_user_ban_form: &CommunityUserBanForm, + community_person_ban_form: &CommunityPersonBanForm, ) -> Result { - use lemmy_db_schema::schema::community_user_ban::dsl::*; + use lemmy_db_schema::schema::community_person_ban::dsl::*; diesel::delete( - community_user_ban - .filter(community_id.eq(community_user_ban_form.community_id)) - .filter(user_id.eq(community_user_ban_form.user_id)), + community_person_ban + .filter(community_id.eq(community_person_ban_form.community_id)) + .filter(person_id.eq(community_person_ban_form.person_id)), ) .execute(conn) } @@ -313,7 +313,7 @@ impl Followable for CommunityFollower { diesel::delete( community_follower .filter(community_id.eq(&community_follower_form.community_id)) - .filter(user_id.eq(&community_follower_form.user_id)), + .filter(user_id.eq(&community_follower_form.person_id)), ) .execute(conn) } @@ -339,31 +339,21 @@ mod tests { ListingType, SortType, }; - use lemmy_db_schema::source::{community::*, user::*}; + use lemmy_db_schema::source::{community::*, person::*}; #[test] fn test_crud() { let conn = establish_unpooled_connection(); - let new_user = UserForm { + let new_person = PersonForm { name: "bobbee".into(), preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, avatar: None, banner: None, - admin: false, banned: Some(false), + deleted: false, published: None, updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, actor_id: None, bio: None, local: true, @@ -374,11 +364,11 @@ mod tests { shared_inbox_url: None, }; - let inserted_user = User_::create(&conn, &new_user).unwrap(); + let inserted_person = Person::create(&conn, &new_person).unwrap(); let new_community = CommunityForm { name: "TIL".into(), - creator_id: inserted_user.id, + creator_id: inserted_person.id, title: "nada".to_owned(), description: None, nsfw: false, @@ -402,7 +392,7 @@ mod tests { let expected_community = Community { id: inserted_community.id, - creator_id: inserted_user.id, + creator_id: inserted_person.id, name: "TIL".into(), title: "nada".to_owned(), description: None, @@ -425,7 +415,7 @@ mod tests { let community_follower_form = CommunityFollowerForm { community_id: inserted_community.id, - user_id: inserted_user.id, + person_id: inserted_person.id, pending: false, }; @@ -435,55 +425,55 @@ mod tests { let expected_community_follower = CommunityFollower { id: inserted_community_follower.id, community_id: inserted_community.id, - user_id: inserted_user.id, + person_id: inserted_person.id, pending: Some(false), published: inserted_community_follower.published, }; - let community_user_form = CommunityModeratorForm { + let community_moderator_form = CommunityModeratorForm { community_id: inserted_community.id, - user_id: inserted_user.id, + person_id: inserted_person.id, }; - let inserted_community_user = CommunityModerator::join(&conn, &community_user_form).unwrap(); + let inserted_community_moderator = CommunityModerator::join(&conn, &community_moderator_form).unwrap(); - let expected_community_user = CommunityModerator { - id: inserted_community_user.id, + let expected_community_moderator = CommunityModerator { + id: inserted_community_moderator.id, community_id: inserted_community.id, - user_id: inserted_user.id, - published: inserted_community_user.published, + person_id: inserted_person.id, + published: inserted_community_moderator.published, }; - let community_user_ban_form = CommunityUserBanForm { + let community_person_ban_form = CommunityPersonBanForm { community_id: inserted_community.id, - user_id: inserted_user.id, + person_id: inserted_person.id, }; - let inserted_community_user_ban = - CommunityUserBan::ban(&conn, &community_user_ban_form).unwrap(); + let inserted_community_person_ban = + CommunityPersonBan::ban(&conn, &community_person_ban_form).unwrap(); - let expected_community_user_ban = CommunityUserBan { - id: inserted_community_user_ban.id, + let expected_community_person_ban = CommunityPersonBan { + id: inserted_community_person_ban.id, community_id: inserted_community.id, - user_id: inserted_user.id, - published: inserted_community_user_ban.published, + person_id: inserted_person.id, + published: inserted_community_person_ban.published, }; let read_community = Community::read(&conn, inserted_community.id).unwrap(); let updated_community = Community::update(&conn, inserted_community.id, &new_community).unwrap(); let ignored_community = CommunityFollower::unfollow(&conn, &community_follower_form).unwrap(); - let left_community = CommunityModerator::leave(&conn, &community_user_form).unwrap(); - let unban = CommunityUserBan::unban(&conn, &community_user_ban_form).unwrap(); + let left_community = CommunityModerator::leave(&conn, &community_moderator_form).unwrap(); + let unban = CommunityPersonBan::unban(&conn, &community_person_ban_form).unwrap(); let num_deleted = Community::delete(&conn, inserted_community.id).unwrap(); - User_::delete(&conn, inserted_user.id).unwrap(); + Person::delete(&conn, inserted_person.id).unwrap(); assert_eq!(expected_community, read_community); assert_eq!(expected_community, inserted_community); assert_eq!(expected_community, updated_community); assert_eq!(expected_community_follower, inserted_community_follower); - assert_eq!(expected_community_user, inserted_community_user); - assert_eq!(expected_community_user_ban, inserted_community_user_ban); + assert_eq!(expected_community_moderator, inserted_community_moderator); + assert_eq!(expected_community_person_ban, inserted_community_person_ban); assert_eq!(1, ignored_community); assert_eq!(1, left_community); assert_eq!(1, unban); diff --git a/crates/db_queries/src/source/local_user.rs b/crates/db_queries/src/source/local_user.rs new file mode 100644 index 00000000..53743864 --- /dev/null +++ b/crates/db_queries/src/source/local_user.rs @@ -0,0 +1,76 @@ +use crate::{is_email_regex, ApubObject, Crud, ToSafeSettings}; +mod safe_settings_type { + use crate::ToSafeSettings; + use lemmy_db_schema::{schema::user_::columns::*, source::user::User_}; + + type Columns = ( + id, + name, + preferred_username, + email, + avatar, + admin, + banned, + published, + updated, + show_nsfw, + theme, + default_sort_type, + default_listing_type, + lang, + show_avatars, + send_notifications_to_email, + matrix_user_id, + actor_id, + bio, + local, + last_refreshed_at, + banner, + deleted, + ); + + impl ToSafeSettings for User_ { + type SafeSettingsColumns = Columns; + fn safe_settings_columns_tuple() -> Self::SafeSettingsColumns { + ( + id, + name, + preferred_username, + email, + avatar, + admin, + banned, + published, + updated, + show_nsfw, + theme, + default_sort_type, + default_listing_type, + lang, + show_avatars, + send_notifications_to_email, + matrix_user_id, + actor_id, + bio, + local, + last_refreshed_at, + banner, + deleted, + ) + } + } +} + +pub trait UserSafeSettings_ { + fn read(conn: &PgConnection, user_id: i32) -> Result; +} + +impl UserSafeSettings_ for UserSafeSettings { + fn read(conn: &PgConnection, user_id: i32) -> Result { + user_ + .select(User_::safe_settings_columns_tuple()) + .filter(deleted.eq(false)) + .find(user_id) + .first::(conn) + } +} diff --git a/crates/db_queries/src/source/mod.rs b/crates/db_queries/src/source/mod.rs index a39dc110..4882ddf4 100644 --- a/crates/db_queries/src/source/mod.rs +++ b/crates/db_queries/src/source/mod.rs @@ -8,5 +8,6 @@ pub mod post; pub mod post_report; pub mod private_message; pub mod site; -pub mod user; -pub mod user_mention; +pub mod person; +pub mod person_mention; +pub mod local_user; diff --git a/crates/db_queries/src/source/moderator.rs b/crates/db_queries/src/source/moderator.rs index 9b6e58ed..36d90fdd 100644 --- a/crates/db_queries/src/source/moderator.rs +++ b/crates/db_queries/src/source/moderator.rs @@ -198,32 +198,22 @@ impl Crud for ModAdd { #[cfg(test)] mod tests { use crate::{establish_unpooled_connection, Crud, ListingType, SortType}; - use lemmy_db_schema::source::{comment::*, community::*, moderator::*, post::*, user::*}; + use lemmy_db_schema::source::{comment::*, community::*, moderator::*, post::*, person::*}; // use Crud; #[test] fn test_crud() { let conn = establish_unpooled_connection(); - let new_mod = UserForm { + let new_mod = PersonForm { name: "the mod".into(), preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, avatar: None, banner: None, - admin: false, banned: Some(false), + deleted: false, published: None, updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, actor_id: None, bio: None, local: true, @@ -234,27 +224,17 @@ mod tests { shared_inbox_url: None, }; - let inserted_mod = User_::create(&conn, &new_mod).unwrap(); + let inserted_mod = Person::create(&conn, &new_mod).unwrap(); - let new_user = UserForm { + let new_person = PersonForm { name: "jim2".into(), preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, avatar: None, banner: None, - admin: false, banned: Some(false), + deleted: false, published: None, updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, actor_id: None, bio: None, local: true, @@ -265,13 +245,13 @@ mod tests { shared_inbox_url: None, }; - let inserted_user = User_::create(&conn, &new_user).unwrap(); + let inserted_person = Person::create(&conn, &new_person).unwrap(); let new_community = CommunityForm { name: "mod_community".to_string(), title: "nada".to_owned(), description: None, - creator_id: inserted_user.id, + creator_id: inserted_person.id, removed: None, deleted: None, updated: None, @@ -295,7 +275,7 @@ mod tests { name: "A test post thweep".into(), url: None, body: None, - creator_id: inserted_user.id, + creator_id: inserted_person.id, community_id: inserted_community.id, removed: None, deleted: None, @@ -316,7 +296,7 @@ mod tests { let comment_form = CommentForm { content: "A test comment".into(), - creator_id: inserted_user.id, + creator_id: inserted_person.id, post_id: inserted_post.id, removed: None, deleted: None, @@ -334,7 +314,7 @@ mod tests { // remove post let mod_remove_post_form = ModRemovePostForm { - mod_user_id: inserted_mod.id, + mod_person_id: inserted_mod.id, post_id: inserted_post.id, reason: None, removed: None, @@ -344,7 +324,7 @@ mod tests { let expected_mod_remove_post = ModRemovePost { id: inserted_mod_remove_post.id, post_id: inserted_post.id, - mod_user_id: inserted_mod.id, + mod_person_id: inserted_mod.id, reason: None, removed: Some(true), when_: inserted_mod_remove_post.when_, @@ -353,7 +333,7 @@ mod tests { // lock post let mod_lock_post_form = ModLockPostForm { - mod_user_id: inserted_mod.id, + mod_person_id: inserted_mod.id, post_id: inserted_post.id, locked: None, }; @@ -362,7 +342,7 @@ mod tests { let expected_mod_lock_post = ModLockPost { id: inserted_mod_lock_post.id, post_id: inserted_post.id, - mod_user_id: inserted_mod.id, + mod_person_id: inserted_mod.id, locked: Some(true), when_: inserted_mod_lock_post.when_, }; @@ -370,7 +350,7 @@ mod tests { // sticky post let mod_sticky_post_form = ModStickyPostForm { - mod_user_id: inserted_mod.id, + mod_person_id: inserted_mod.id, post_id: inserted_post.id, stickied: None, }; @@ -379,7 +359,7 @@ mod tests { let expected_mod_sticky_post = ModStickyPost { id: inserted_mod_sticky_post.id, post_id: inserted_post.id, - mod_user_id: inserted_mod.id, + mod_person_id: inserted_mod.id, stickied: Some(true), when_: inserted_mod_sticky_post.when_, }; @@ -387,7 +367,7 @@ mod tests { // comment let mod_remove_comment_form = ModRemoveCommentForm { - mod_user_id: inserted_mod.id, + mod_person_id: inserted_mod.id, comment_id: inserted_comment.id, reason: None, removed: None, @@ -399,7 +379,7 @@ mod tests { let expected_mod_remove_comment = ModRemoveComment { id: inserted_mod_remove_comment.id, comment_id: inserted_comment.id, - mod_user_id: inserted_mod.id, + mod_person_id: inserted_mod.id, reason: None, removed: Some(true), when_: inserted_mod_remove_comment.when_, @@ -408,7 +388,7 @@ mod tests { // community let mod_remove_community_form = ModRemoveCommunityForm { - mod_user_id: inserted_mod.id, + mod_person_id: inserted_mod.id, community_id: inserted_community.id, reason: None, removed: None, @@ -421,7 +401,7 @@ mod tests { let expected_mod_remove_community = ModRemoveCommunity { id: inserted_mod_remove_community.id, community_id: inserted_community.id, - mod_user_id: inserted_mod.id, + mod_person_id: inserted_mod.id, reason: None, removed: Some(true), expires: None, @@ -431,8 +411,8 @@ mod tests { // ban from community let mod_ban_from_community_form = ModBanFromCommunityForm { - mod_user_id: inserted_mod.id, - other_user_id: inserted_user.id, + mod_person_id: inserted_mod.id, + other_person_id: inserted_person.id, community_id: inserted_community.id, reason: None, banned: None, @@ -445,8 +425,8 @@ mod tests { let expected_mod_ban_from_community = ModBanFromCommunity { id: inserted_mod_ban_from_community.id, community_id: inserted_community.id, - mod_user_id: inserted_mod.id, - other_user_id: inserted_user.id, + mod_person_id: inserted_mod.id, + other_person_id: inserted_person.id, reason: None, banned: Some(true), expires: None, @@ -456,8 +436,8 @@ mod tests { // ban let mod_ban_form = ModBanForm { - mod_user_id: inserted_mod.id, - other_user_id: inserted_user.id, + mod_person_id: inserted_mod.id, + other_person_id: inserted_person.id, reason: None, banned: None, expires: None, @@ -466,8 +446,8 @@ mod tests { let read_mod_ban = ModBan::read(&conn, inserted_mod_ban.id).unwrap(); let expected_mod_ban = ModBan { id: inserted_mod_ban.id, - mod_user_id: inserted_mod.id, - other_user_id: inserted_user.id, + mod_person_id: inserted_mod.id, + other_person_id: inserted_person.id, reason: None, banned: Some(true), expires: None, @@ -477,8 +457,8 @@ mod tests { // mod add community let mod_add_community_form = ModAddCommunityForm { - mod_user_id: inserted_mod.id, - other_user_id: inserted_user.id, + mod_person_id: inserted_mod.id, + other_person_id: inserted_person.id, community_id: inserted_community.id, removed: None, }; @@ -489,8 +469,8 @@ mod tests { let expected_mod_add_community = ModAddCommunity { id: inserted_mod_add_community.id, community_id: inserted_community.id, - mod_user_id: inserted_mod.id, - other_user_id: inserted_user.id, + mod_person_id: inserted_mod.id, + other_person_id: inserted_person.id, removed: Some(false), when_: inserted_mod_add_community.when_, }; @@ -498,16 +478,16 @@ mod tests { // mod add let mod_add_form = ModAddForm { - mod_user_id: inserted_mod.id, - other_user_id: inserted_user.id, + mod_person_id: inserted_mod.id, + other_person_id: inserted_person.id, removed: None, }; let inserted_mod_add = ModAdd::create(&conn, &mod_add_form).unwrap(); let read_mod_add = ModAdd::read(&conn, inserted_mod_add.id).unwrap(); let expected_mod_add = ModAdd { id: inserted_mod_add.id, - mod_user_id: inserted_mod.id, - other_user_id: inserted_user.id, + mod_person_id: inserted_mod.id, + other_person_id: inserted_person.id, removed: Some(false), when_: inserted_mod_add.when_, }; @@ -515,8 +495,8 @@ mod tests { Comment::delete(&conn, inserted_comment.id).unwrap(); Post::delete(&conn, inserted_post.id).unwrap(); Community::delete(&conn, inserted_community.id).unwrap(); - User_::delete(&conn, inserted_user.id).unwrap(); - User_::delete(&conn, inserted_mod.id).unwrap(); + Person::delete(&conn, inserted_person.id).unwrap(); + Person::delete(&conn, inserted_mod.id).unwrap(); assert_eq!(expected_mod_remove_post, read_mod_remove_post); assert_eq!(expected_mod_lock_post, read_mod_lock_post); diff --git a/crates/db_queries/src/source/password_reset_request.rs b/crates/db_queries/src/source/password_reset_request.rs index f58d2c01..a8524cfb 100644 --- a/crates/db_queries/src/source/password_reset_request.rs +++ b/crates/db_queries/src/source/password_reset_request.rs @@ -28,7 +28,7 @@ impl Crud for PasswordResetRequest { pub trait PasswordResetRequest_ { fn create_token( conn: &PgConnection, - from_user_id: i32, + from_local_user_id: i32, token: &str, ) -> Result; fn read_from_token(conn: &PgConnection, token: &str) -> Result; @@ -37,7 +37,7 @@ pub trait PasswordResetRequest_ { impl PasswordResetRequest_ for PasswordResetRequest { fn create_token( conn: &PgConnection, - from_user_id: i32, + from_local_user_id: i32, token: &str, ) -> Result { let mut hasher = Sha256::new(); @@ -45,7 +45,7 @@ impl PasswordResetRequest_ for PasswordResetRequest { let token_hash: String = bytes_to_hex(hasher.finalize().to_vec()); let form = PasswordResetRequestForm { - user_id: from_user_id, + local_user_id: from_local_user_id, token_encrypted: token_hash, }; @@ -79,31 +79,21 @@ mod tests { ListingType, SortType, }; - use lemmy_db_schema::source::{password_reset_request::PasswordResetRequest, user::*}; + use lemmy_db_schema::source::{password_reset_request::PasswordResetRequest, person::*}; #[test] fn test_crud() { let conn = establish_unpooled_connection(); - let new_user = UserForm { + let new_person = PersonForm { name: "thommy prw".into(), preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, avatar: None, banner: None, - admin: false, banned: Some(false), + deleted: false, published: None, updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, actor_id: None, bio: None, local: true, @@ -114,23 +104,23 @@ mod tests { shared_inbox_url: None, }; - let inserted_user = User_::create(&conn, &new_user).unwrap(); + let inserted_person = Person::create(&conn, &new_person).unwrap(); let token = "nope"; let token_encrypted_ = "ca3704aa0b06f5954c79ee837faa152d84d6b2d42838f0637a15eda8337dbdce"; let inserted_password_reset_request = - PasswordResetRequest::create_token(&conn, inserted_user.id, token).unwrap(); + PasswordResetRequest::create_token(&conn, inserted_person.id, token).unwrap(); let expected_password_reset_request = PasswordResetRequest { id: inserted_password_reset_request.id, - user_id: inserted_user.id, + local_user_id: inserted_person.id, token_encrypted: token_encrypted_.to_string(), published: inserted_password_reset_request.published, }; let read_password_reset_request = PasswordResetRequest::read_from_token(&conn, token).unwrap(); - let num_deleted = User_::delete(&conn, inserted_user.id).unwrap(); + let num_deleted = Person::delete(&conn, inserted_person.id).unwrap(); assert_eq!(expected_password_reset_request, read_password_reset_request); assert_eq!( diff --git a/crates/db_queries/src/source/person.rs b/crates/db_queries/src/source/person.rs new file mode 100644 index 00000000..e17fcda5 --- /dev/null +++ b/crates/db_queries/src/source/person.rs @@ -0,0 +1,364 @@ +use crate::{is_email_regex, ApubObject, Crud, ToSafeSettings}; +use bcrypt::{hash, DEFAULT_COST}; +use diesel::{dsl::*, result::Error, *}; +use lemmy_db_schema::{ + naive_now, + schema::person::dsl::*, + source::person::{PersonForm, Person}, + Url, +}; +use lemmy_utils::settings::Settings; + +mod safe_type { + use crate::ToSafe; + use lemmy_db_schema::{schema::person::columns::*, source::person::Person}; + + type Columns = ( + id, + name, + preferred_username, + avatar, + banned, + published, + updated, + actor_id, + bio, + local, + last_refreshed_at, + banner, + deleted, + inbox_url, + shared_inbox_url, + ); + + impl ToSafe for Person { + type SafeColumns = Columns; + fn safe_columns_tuple() -> Self::SafeColumns { + ( + id, + name, + preferred_username, + avatar, + banned, + published, + updated, + actor_id, + bio, + local, + last_refreshed_at, + banner, + deleted, + inbox_url, + shared_inbox_url, + ) + } + } +} + +mod safe_type_alias_1 { + use crate::ToSafe; + use lemmy_db_schema::{schema::person_alias_1::columns::*, source::person::PersonAlias1}; + + type Columns = ( + id, + name, + preferred_username, + avatar, + banned, + published, + updated, + actor_id, + bio, + local, + last_refreshed_at, + banner, + deleted, + inbox_url, + shared_inbox_url, + ); + + impl ToSafe for PersonAlias1 { + type SafeColumns = Columns; + fn safe_columns_tuple() -> Self::SafeColumns { + ( + id, + name, + preferred_username, + avatar, + banned, + published, + updated, + actor_id, + bio, + local, + last_refreshed_at, + banner, + deleted, + inbox_url, + shared_inbox_url, + ) + } + } +} + +mod safe_type_alias_2 { + use crate::ToSafe; + use lemmy_db_schema::{schema::person_alias_2::columns::*, source::person::PersonAlias2}; + + type Columns = ( + id, + name, + preferred_username, + avatar, + banned, + published, + updated, + actor_id, + bio, + local, + last_refreshed_at, + banner, + deleted, + inbox_url, + shared_inbox_url, + ); + + impl ToSafe for PersonAlias2 { + type SafeColumns = Columns; + fn safe_columns_tuple() -> Self::SafeColumns { + ( + id, + name, + preferred_username, + avatar, + banned, + published, + updated, + actor_id, + bio, + local, + last_refreshed_at, + banner, + deleted, + inbox_url, + shared_inbox_url, + ) + } + } +} + +impl Crud for Person { + fn read(conn: &PgConnection, person_id: i32) -> Result { + person + .filter(deleted.eq(false)) + .find(person_id) + .first::(conn) + } + fn delete(conn: &PgConnection, person_id: i32) -> Result { + diesel::delete(person.find(person_id)).execute(conn) + } + fn create(conn: &PgConnection, form: &PersonForm) -> Result { + insert_into(person).values(form).get_result::(conn) + } + fn update(conn: &PgConnection, person_id: i32, form: &PersonForm) -> Result { + diesel::update(person.find(person_id)) + .set(form) + .get_result::(conn) + } +} + +impl ApubObject for Person { + fn read_from_apub_id(conn: &PgConnection, object_id: &Url) -> Result { + use lemmy_db_schema::schema::person::dsl::*; + person + .filter(deleted.eq(false)) + .filter(actor_id.eq(object_id)) + .first::(conn) + } + + fn upsert(conn: &PgConnection, person_form: &PersonForm) -> Result { + insert_into(person) + .values(person_form) + .on_conflict(actor_id) + .do_update() + .set(person_form) + .get_result::(conn) + } +} + +pub trait Person_ { + fn register(conn: &PgConnection, form: &PersonForm) -> Result; + fn update_password(conn: &PgConnection, person_id: i32, new_password: &str) + -> Result; + fn read_from_name(conn: &PgConnection, from_name: &str) -> Result; + fn add_admin(conn: &PgConnection, person_id: i32, added: bool) -> Result; + fn ban_person(conn: &PgConnection, person_id: i32, ban: bool) -> Result; + fn find_by_email_or_name( + conn: &PgConnection, + name_or_email: &str, + ) -> Result; + fn find_by_name(conn: &PgConnection, name: &str) -> Result; + fn find_by_email(conn: &PgConnection, from_email: &str) -> Result; + fn get_profile_url(&self, hostname: &str) -> String; + fn mark_as_updated(conn: &PgConnection, person_id: i32) -> Result; + fn delete_account(conn: &PgConnection, person_id: i32) -> Result; +} + +impl Person_ for Person { + fn register(conn: &PgConnection, form: &PersonForm) -> Result { + let mut edited_person = form.clone(); + let password_hash = + hash(&form.password_encrypted, DEFAULT_COST).expect("Couldn't hash password"); + edited_person.password_encrypted = password_hash; + + Self::create(&conn, &edited_person) + } + + // TODO do more individual updates like these + fn update_password(conn: &PgConnection, person_id: i32, new_password: &str) -> Result { + let password_hash = hash(new_password, DEFAULT_COST).expect("Couldn't hash password"); + + diesel::update(person.find(person_id)) + .set(( + password_encrypted.eq(password_hash), + updated.eq(naive_now()), + )) + .get_result::(conn) + } + + fn read_from_name(conn: &PgConnection, from_name: &str) -> Result { + person + .filter(local.eq(true)) + .filter(deleted.eq(false)) + .filter(name.eq(from_name)) + .first::(conn) + } + + fn add_admin(conn: &PgConnection, person_id: i32, added: bool) -> Result { + diesel::update(person.find(person_id)) + .set(admin.eq(added)) + .get_result::(conn) + } + + fn ban_person(conn: &PgConnection, person_id: i32, ban: bool) -> Result { + diesel::update(person.find(person_id)) + .set(banned.eq(ban)) + .get_result::(conn) + } + + fn find_by_email_or_name( + conn: &PgConnection, + name_or_email: &str, + ) -> Result { + if is_email_regex(name_or_email) { + Self::find_by_email(conn, name_or_email) + } else { + Self::find_by_name(conn, name_or_email) + } + } + + fn find_by_name(conn: &PgConnection, name: &str) -> Result { + person + .filter(deleted.eq(false)) + .filter(local.eq(true)) + .filter(name.ilike(name)) + .first::(conn) + } + + fn find_by_email(conn: &PgConnection, from_email: &str) -> Result { + person + .filter(deleted.eq(false)) + .filter(local.eq(true)) + .filter(email.eq(from_email)) + .first::(conn) + } + + fn get_profile_url(&self, hostname: &str) -> String { + format!( + "{}://{}/u/{}", + Settings::get().get_protocol_string(), + hostname, + self.name + ) + } + + fn mark_as_updated(conn: &PgConnection, person_id: i32) -> Result { + diesel::update(person.find(person_id)) + .set((last_refreshed_at.eq(naive_now()),)) + .get_result::(conn) + } + + fn delete_account(conn: &PgConnection, person_id: i32) -> Result { + diesel::update(person.find(person_id)) + .set(( + preferred_username.eq::>(None), + email.eq::>(None), + matrix_user_id.eq::>(None), + bio.eq::>(None), + deleted.eq(true), + updated.eq(naive_now()), + )) + .get_result::(conn) + } +} + +#[cfg(test)] +mod tests { + use crate::{establish_unpooled_connection, source::person::*, ListingType, SortType}; + + #[test] + fn test_crud() { + let conn = establish_unpooled_connection(); + + let new_person = PersonForm { + name: "thommy".into(), + preferred_username: None, + avatar: None, + banner: None, + banned: Some(false), + deleted: false, + published: None, + updated: None, + actor_id: None, + bio: None, + local: true, + private_key: None, + public_key: None, + last_refreshed_at: None, + inbox_url: None, + shared_inbox_url: None, + }; + + let inserted_person = Person::create(&conn, &new_person).unwrap(); + + let expected_person = Person { + id: inserted_person.id, + name: "thommy".into(), + preferred_username: None, + avatar: None, + banner: None, + banned: false, + deleted: false, + published: inserted_person.published, + updated: None, + actor_id: inserted_person.actor_id.to_owned(), + bio: None, + local: true, + private_key: None, + public_key: None, + last_refreshed_at: inserted_person.published, + deleted: false, + inbox_url: inserted_person.inbox_url.to_owned(), + shared_inbox_url: None, + }; + + let read_person = Person::read(&conn, inserted_person.id).unwrap(); + let updated_person = Person::update(&conn, inserted_person.id, &new_person).unwrap(); + let num_deleted = Person::delete(&conn, inserted_person.id).unwrap(); + + assert_eq!(expected_person, read_person); + assert_eq!(expected_person, inserted_person); + assert_eq!(expected_person, updated_person); + assert_eq!(1, num_deleted); + } +} diff --git a/crates/db_queries/src/source/user_mention.rs b/crates/db_queries/src/source/person_mention.rs similarity index 60% rename from crates/db_queries/src/source/user_mention.rs rename to crates/db_queries/src/source/person_mention.rs index b0c97572..73543b95 100644 --- a/crates/db_queries/src/source/user_mention.rs +++ b/crates/db_queries/src/source/person_mention.rs @@ -1,57 +1,57 @@ use crate::Crud; use diesel::{dsl::*, result::Error, *}; -use lemmy_db_schema::source::user_mention::*; +use lemmy_db_schema::source::person_mention::*; -impl Crud for UserMention { - fn read(conn: &PgConnection, user_mention_id: i32) -> Result { - use lemmy_db_schema::schema::user_mention::dsl::*; - user_mention.find(user_mention_id).first::(conn) +impl Crud for PersonMention { + fn read(conn: &PgConnection, person_mention_id: i32) -> Result { + use lemmy_db_schema::schema::person_mention::dsl::*; + person_mention.find(person_mention_id).first::(conn) } - fn create(conn: &PgConnection, user_mention_form: &UserMentionForm) -> Result { - use lemmy_db_schema::schema::user_mention::dsl::*; + fn create(conn: &PgConnection, person_mention_form: &PersonMentionForm) -> Result { + use lemmy_db_schema::schema::person_mention::dsl::*; // since the return here isnt utilized, we dont need to do an update // but get_result doesnt return the existing row here - insert_into(user_mention) - .values(user_mention_form) + insert_into(person_mention) + .values(person_mention_form) .on_conflict((recipient_id, comment_id)) .do_update() - .set(user_mention_form) + .set(person_mention_form) .get_result::(conn) } fn update( conn: &PgConnection, - user_mention_id: i32, - user_mention_form: &UserMentionForm, + person_mention_id: i32, + person_mention_form: &PersonMentionForm, ) -> Result { - use lemmy_db_schema::schema::user_mention::dsl::*; - diesel::update(user_mention.find(user_mention_id)) - .set(user_mention_form) + use lemmy_db_schema::schema::person_mention::dsl::*; + diesel::update(person_mention.find(person_mention_id)) + .set(person_mention_form) .get_result::(conn) } } -pub trait UserMention_ { +pub trait PersonMention_ { fn update_read( conn: &PgConnection, - user_mention_id: i32, + person_mention_id: i32, new_read: bool, - ) -> Result; + ) -> Result; fn mark_all_as_read( conn: &PgConnection, for_recipient_id: i32, - ) -> Result, Error>; + ) -> Result, Error>; } -impl UserMention_ for UserMention { +impl PersonMention_ for PersonMention { fn update_read( conn: &PgConnection, - user_mention_id: i32, + person_mention_id: i32, new_read: bool, - ) -> Result { - use lemmy_db_schema::schema::user_mention::dsl::*; - diesel::update(user_mention.find(user_mention_id)) + ) -> Result { + use lemmy_db_schema::schema::person_mention::dsl::*; + diesel::update(person_mention.find(person_mention_id)) .set(read.eq(new_read)) .get_result::(conn) } @@ -59,10 +59,10 @@ impl UserMention_ for UserMention { fn mark_all_as_read( conn: &PgConnection, for_recipient_id: i32, - ) -> Result, Error> { - use lemmy_db_schema::schema::user_mention::dsl::*; + ) -> Result, Error> { + use lemmy_db_schema::schema::person_mention::dsl::*; diesel::update( - user_mention + person_mention .filter(recipient_id.eq(for_recipient_id)) .filter(read.eq(false)), ) @@ -78,33 +78,23 @@ mod tests { comment::*, community::{Community, CommunityForm}, post::*, - user::*, - user_mention::*, + person::*, + person_mention::*, }; #[test] fn test_crud() { let conn = establish_unpooled_connection(); - let new_user = UserForm { + let new_person = PersonForm { name: "terrylake".into(), preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, avatar: None, banner: None, - admin: false, banned: Some(false), + deleted: false, published: None, updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, actor_id: None, bio: None, local: true, @@ -115,27 +105,17 @@ mod tests { shared_inbox_url: None, }; - let inserted_user = User_::create(&conn, &new_user).unwrap(); + let inserted_person = Person::create(&conn, &new_person).unwrap(); - let recipient_form = UserForm { + let recipient_form = PersonForm { name: "terrylakes recipient".into(), preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, avatar: None, banner: None, - admin: false, banned: Some(false), + deleted: false, published: None, updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, actor_id: None, bio: None, local: true, @@ -146,13 +126,13 @@ mod tests { shared_inbox_url: None, }; - let inserted_recipient = User_::create(&conn, &recipient_form).unwrap(); + let inserted_recipient = Person::create(&conn, &recipient_form).unwrap(); let new_community = CommunityForm { name: "test community lake".to_string(), title: "nada".to_owned(), description: None, - creator_id: inserted_user.id, + creator_id: inserted_person.id, removed: None, deleted: None, updated: None, @@ -174,7 +154,7 @@ mod tests { let new_post = PostForm { name: "A test post".into(), - creator_id: inserted_user.id, + creator_id: inserted_person.id, url: None, body: None, community_id: inserted_community.id, @@ -197,7 +177,7 @@ mod tests { let comment_form = CommentForm { content: "A test comment".into(), - creator_id: inserted_user.id, + creator_id: inserted_person.id, post_id: inserted_post.id, removed: None, deleted: None, @@ -211,15 +191,15 @@ mod tests { let inserted_comment = Comment::create(&conn, &comment_form).unwrap(); - let user_mention_form = UserMentionForm { + let person_mention_form = PersonMentionForm { recipient_id: inserted_recipient.id, comment_id: inserted_comment.id, read: None, }; - let inserted_mention = UserMention::create(&conn, &user_mention_form).unwrap(); + let inserted_mention = PersonMention::create(&conn, &person_mention_form).unwrap(); - let expected_mention = UserMention { + let expected_mention = PersonMention { id: inserted_mention.id, recipient_id: inserted_mention.recipient_id, comment_id: inserted_mention.comment_id, @@ -227,14 +207,14 @@ mod tests { published: inserted_mention.published, }; - let read_mention = UserMention::read(&conn, inserted_mention.id).unwrap(); + let read_mention = PersonMention::read(&conn, inserted_mention.id).unwrap(); let updated_mention = - UserMention::update(&conn, inserted_mention.id, &user_mention_form).unwrap(); + PersonMention::update(&conn, inserted_mention.id, &person_mention_form).unwrap(); Comment::delete(&conn, inserted_comment.id).unwrap(); Post::delete(&conn, inserted_post.id).unwrap(); Community::delete(&conn, inserted_community.id).unwrap(); - User_::delete(&conn, inserted_user.id).unwrap(); - User_::delete(&conn, inserted_recipient.id).unwrap(); + Person::delete(&conn, inserted_person.id).unwrap(); + Person::delete(&conn, inserted_recipient.id).unwrap(); assert_eq!(expected_mention, read_mention); assert_eq!(expected_mention, inserted_mention); diff --git a/crates/db_queries/src/source/post.rs b/crates/db_queries/src/source/post.rs index 1c19e53d..6a66a79c 100644 --- a/crates/db_queries/src/source/post.rs +++ b/crates/db_queries/src/source/post.rs @@ -54,7 +54,7 @@ pub trait Post_ { ) -> Result, Error>; fn update_locked(conn: &PgConnection, post_id: i32, new_locked: bool) -> Result; fn update_stickied(conn: &PgConnection, post_id: i32, new_stickied: bool) -> Result; - fn is_post_creator(user_id: i32, post_creator_id: i32) -> bool; + fn is_post_creator(person_id: i32, post_creator_id: i32) -> bool; } impl Post_ for Post { @@ -141,8 +141,8 @@ impl Post_ for Post { .get_result::(conn) } - fn is_post_creator(user_id: i32, post_creator_id: i32) -> bool { - user_id == post_creator_id + fn is_post_creator(person_id: i32, post_creator_id: i32) -> bool { + person_id == post_creator_id } } @@ -168,17 +168,17 @@ impl Likeable for PostLike { use lemmy_db_schema::schema::post_like::dsl::*; insert_into(post_like) .values(post_like_form) - .on_conflict((post_id, user_id)) + .on_conflict((post_id, person_id)) .do_update() .set(post_like_form) .get_result::(conn) } - fn remove(conn: &PgConnection, user_id: i32, post_id: i32) -> Result { + fn remove(conn: &PgConnection, person_id: i32, post_id: i32) -> Result { use lemmy_db_schema::schema::post_like::dsl; diesel::delete( dsl::post_like .filter(dsl::post_id.eq(post_id)) - .filter(dsl::user_id.eq(user_id)), + .filter(dsl::person_id.eq(person_id)), ) .execute(conn) } @@ -189,7 +189,7 @@ impl Saveable for PostSaved { use lemmy_db_schema::schema::post_saved::dsl::*; insert_into(post_saved) .values(post_saved_form) - .on_conflict((post_id, user_id)) + .on_conflict((post_id, person_id)) .do_update() .set(post_saved_form) .get_result::(conn) @@ -199,7 +199,7 @@ impl Saveable for PostSaved { diesel::delete( post_saved .filter(post_id.eq(post_saved_form.post_id)) - .filter(user_id.eq(post_saved_form.user_id)), + .filter(person_id.eq(post_saved_form.person_id)), ) .execute(conn) } @@ -218,7 +218,7 @@ impl Readable for PostRead { diesel::delete( post_read .filter(post_id.eq(post_read_form.post_id)) - .filter(user_id.eq(post_read_form.user_id)), + .filter(person_id.eq(post_read_form.person_id)), ) .execute(conn) } @@ -229,32 +229,22 @@ mod tests { use crate::{establish_unpooled_connection, source::post::*, ListingType, SortType}; use lemmy_db_schema::source::{ community::{Community, CommunityForm}, - user::*, + person::*, }; #[test] fn test_crud() { let conn = establish_unpooled_connection(); - let new_user = UserForm { + let new_person = PersonForm { name: "jim".into(), preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, avatar: None, banner: None, - admin: false, banned: Some(false), + deleted: false, published: None, updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, actor_id: None, bio: None, local: true, @@ -265,13 +255,13 @@ mod tests { shared_inbox_url: None, }; - let inserted_user = User_::create(&conn, &new_user).unwrap(); + let inserted_person = Person::create(&conn, &new_person).unwrap(); let new_community = CommunityForm { name: "test community_3".to_string(), title: "nada".to_owned(), description: None, - creator_id: inserted_user.id, + creator_id: inserted_person.id, removed: None, deleted: None, updated: None, @@ -295,7 +285,7 @@ mod tests { name: "A test post".into(), url: None, body: None, - creator_id: inserted_user.id, + creator_id: inserted_person.id, community_id: inserted_community.id, removed: None, deleted: None, @@ -319,7 +309,7 @@ mod tests { name: "A test post".into(), url: None, body: None, - creator_id: inserted_user.id, + creator_id: inserted_person.id, community_id: inserted_community.id, published: inserted_post.published, removed: false, @@ -339,7 +329,7 @@ mod tests { // Post Like let post_like_form = PostLikeForm { post_id: inserted_post.id, - user_id: inserted_user.id, + person_id: inserted_person.id, score: 1, }; @@ -348,7 +338,7 @@ mod tests { let expected_post_like = PostLike { id: inserted_post_like.id, post_id: inserted_post.id, - user_id: inserted_user.id, + person_id: inserted_person.id, published: inserted_post_like.published, score: 1, }; @@ -356,7 +346,7 @@ mod tests { // Post Save let post_saved_form = PostSavedForm { post_id: inserted_post.id, - user_id: inserted_user.id, + person_id: inserted_person.id, }; let inserted_post_saved = PostSaved::save(&conn, &post_saved_form).unwrap(); @@ -364,14 +354,14 @@ mod tests { let expected_post_saved = PostSaved { id: inserted_post_saved.id, post_id: inserted_post.id, - user_id: inserted_user.id, + person_id: inserted_person.id, published: inserted_post_saved.published, }; // Post Read let post_read_form = PostReadForm { post_id: inserted_post.id, - user_id: inserted_user.id, + person_id: inserted_person.id, }; let inserted_post_read = PostRead::mark_as_read(&conn, &post_read_form).unwrap(); @@ -379,18 +369,18 @@ mod tests { let expected_post_read = PostRead { id: inserted_post_read.id, post_id: inserted_post.id, - user_id: inserted_user.id, + person_id: inserted_person.id, published: inserted_post_read.published, }; let read_post = Post::read(&conn, inserted_post.id).unwrap(); let updated_post = Post::update(&conn, inserted_post.id, &new_post).unwrap(); - let like_removed = PostLike::remove(&conn, inserted_user.id, inserted_post.id).unwrap(); + let like_removed = PostLike::remove(&conn, inserted_person.id, inserted_post.id).unwrap(); let saved_removed = PostSaved::unsave(&conn, &post_saved_form).unwrap(); let read_removed = PostRead::mark_as_unread(&conn, &post_read_form).unwrap(); let num_deleted = Post::delete(&conn, inserted_post.id).unwrap(); Community::delete(&conn, inserted_community.id).unwrap(); - User_::delete(&conn, inserted_user.id).unwrap(); + Person::delete(&conn, inserted_person.id).unwrap(); assert_eq!(expected_post, read_post); assert_eq!(expected_post, inserted_post); diff --git a/crates/db_queries/src/source/private_message.rs b/crates/db_queries/src/source/private_message.rs index 8cace938..e4ca3c6b 100644 --- a/crates/db_queries/src/source/private_message.rs +++ b/crates/db_queries/src/source/private_message.rs @@ -146,31 +146,21 @@ mod tests { ListingType, SortType, }; - use lemmy_db_schema::source::{private_message::*, user::*}; + use lemmy_db_schema::source::{private_message::*, person::*}; #[test] fn test_crud() { let conn = establish_unpooled_connection(); - let creator_form = UserForm { + let creator_form = PersonForm { name: "creator_pm".into(), preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, avatar: None, banner: None, - admin: false, banned: Some(false), + deleted: false, published: None, updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, actor_id: None, bio: None, local: true, @@ -181,27 +171,17 @@ mod tests { shared_inbox_url: None, }; - let inserted_creator = User_::create(&conn, &creator_form).unwrap(); + let inserted_creator = Person::create(&conn, &creator_form).unwrap(); - let recipient_form = UserForm { + let recipient_form = PersonForm { name: "recipient_pm".into(), preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, avatar: None, banner: None, - admin: false, banned: Some(false), + deleted: false, published: None, updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, actor_id: None, bio: None, local: true, @@ -212,7 +192,7 @@ mod tests { shared_inbox_url: None, }; - let inserted_recipient = User_::create(&conn, &recipient_form).unwrap(); + let inserted_recipient = Person::create(&conn, &recipient_form).unwrap(); let private_message_form = PrivateMessageForm { content: "A test private message".into(), @@ -248,8 +228,8 @@ mod tests { PrivateMessage::update_deleted(&conn, inserted_private_message.id, true).unwrap(); let marked_read_private_message = PrivateMessage::update_read(&conn, inserted_private_message.id, true).unwrap(); - User_::delete(&conn, inserted_creator.id).unwrap(); - User_::delete(&conn, inserted_recipient.id).unwrap(); + Person::delete(&conn, inserted_creator.id).unwrap(); + Person::delete(&conn, inserted_recipient.id).unwrap(); assert_eq!(expected_private_message, read_private_message); assert_eq!(expected_private_message, updated_private_message); diff --git a/crates/db_queries/src/source/user.rs b/crates/db_queries/src/source/user.rs deleted file mode 100644 index 5f3fa6cb..00000000 --- a/crates/db_queries/src/source/user.rs +++ /dev/null @@ -1,458 +0,0 @@ -use crate::{is_email_regex, ApubObject, Crud, ToSafeSettings}; -use bcrypt::{hash, DEFAULT_COST}; -use diesel::{dsl::*, result::Error, *}; -use lemmy_db_schema::{ - naive_now, - schema::user_::dsl::*, - source::user::{UserForm, UserSafeSettings, User_}, - Url, -}; -use lemmy_utils::settings::Settings; - -mod safe_type { - use crate::ToSafe; - use lemmy_db_schema::{schema::user_::columns::*, source::user::User_}; - - type Columns = ( - id, - name, - preferred_username, - avatar, - admin, - banned, - published, - updated, - matrix_user_id, - actor_id, - bio, - local, - banner, - deleted, - inbox_url, - shared_inbox_url, - ); - - impl ToSafe for User_ { - type SafeColumns = Columns; - fn safe_columns_tuple() -> Self::SafeColumns { - ( - id, - name, - preferred_username, - avatar, - admin, - banned, - published, - updated, - matrix_user_id, - actor_id, - bio, - local, - banner, - deleted, - inbox_url, - shared_inbox_url, - ) - } - } -} - -mod safe_type_alias_1 { - use crate::ToSafe; - use lemmy_db_schema::{schema::user_alias_1::columns::*, source::user::UserAlias1}; - - type Columns = ( - id, - name, - preferred_username, - avatar, - admin, - banned, - published, - updated, - matrix_user_id, - actor_id, - bio, - local, - banner, - deleted, - ); - - impl ToSafe for UserAlias1 { - type SafeColumns = Columns; - fn safe_columns_tuple() -> Self::SafeColumns { - ( - id, - name, - preferred_username, - avatar, - admin, - banned, - published, - updated, - matrix_user_id, - actor_id, - bio, - local, - banner, - deleted, - ) - } - } -} - -mod safe_type_alias_2 { - use crate::ToSafe; - use lemmy_db_schema::{schema::user_alias_2::columns::*, source::user::UserAlias2}; - - type Columns = ( - id, - name, - preferred_username, - avatar, - admin, - banned, - published, - updated, - matrix_user_id, - actor_id, - bio, - local, - banner, - deleted, - ); - - impl ToSafe for UserAlias2 { - type SafeColumns = Columns; - fn safe_columns_tuple() -> Self::SafeColumns { - ( - id, - name, - preferred_username, - avatar, - admin, - banned, - published, - updated, - matrix_user_id, - actor_id, - bio, - local, - banner, - deleted, - ) - } - } -} - -mod safe_settings_type { - use crate::ToSafeSettings; - use lemmy_db_schema::{schema::user_::columns::*, source::user::User_}; - - type Columns = ( - id, - name, - preferred_username, - email, - avatar, - admin, - banned, - published, - updated, - show_nsfw, - theme, - default_sort_type, - default_listing_type, - lang, - show_avatars, - send_notifications_to_email, - matrix_user_id, - actor_id, - bio, - local, - last_refreshed_at, - banner, - deleted, - ); - - impl ToSafeSettings for User_ { - type SafeSettingsColumns = Columns; - fn safe_settings_columns_tuple() -> Self::SafeSettingsColumns { - ( - id, - name, - preferred_username, - email, - avatar, - admin, - banned, - published, - updated, - show_nsfw, - theme, - default_sort_type, - default_listing_type, - lang, - show_avatars, - send_notifications_to_email, - matrix_user_id, - actor_id, - bio, - local, - last_refreshed_at, - banner, - deleted, - ) - } - } -} - -pub trait UserSafeSettings_ { - fn read(conn: &PgConnection, user_id: i32) -> Result; -} - -impl UserSafeSettings_ for UserSafeSettings { - fn read(conn: &PgConnection, user_id: i32) -> Result { - user_ - .select(User_::safe_settings_columns_tuple()) - .filter(deleted.eq(false)) - .find(user_id) - .first::(conn) - } -} - -impl Crud for User_ { - fn read(conn: &PgConnection, user_id: i32) -> Result { - user_ - .filter(deleted.eq(false)) - .find(user_id) - .first::(conn) - } - fn delete(conn: &PgConnection, user_id: i32) -> Result { - diesel::delete(user_.find(user_id)).execute(conn) - } - fn create(conn: &PgConnection, form: &UserForm) -> Result { - insert_into(user_).values(form).get_result::(conn) - } - fn update(conn: &PgConnection, user_id: i32, form: &UserForm) -> Result { - diesel::update(user_.find(user_id)) - .set(form) - .get_result::(conn) - } -} - -impl ApubObject for User_ { - fn read_from_apub_id(conn: &PgConnection, object_id: &Url) -> Result { - use lemmy_db_schema::schema::user_::dsl::*; - user_ - .filter(deleted.eq(false)) - .filter(actor_id.eq(object_id)) - .first::(conn) - } - - fn upsert(conn: &PgConnection, user_form: &UserForm) -> Result { - insert_into(user_) - .values(user_form) - .on_conflict(actor_id) - .do_update() - .set(user_form) - .get_result::(conn) - } -} - -pub trait User { - fn register(conn: &PgConnection, form: &UserForm) -> Result; - fn update_password(conn: &PgConnection, user_id: i32, new_password: &str) - -> Result; - fn read_from_name(conn: &PgConnection, from_user_name: &str) -> Result; - fn add_admin(conn: &PgConnection, user_id: i32, added: bool) -> Result; - fn ban_user(conn: &PgConnection, user_id: i32, ban: bool) -> Result; - fn find_by_email_or_username( - conn: &PgConnection, - username_or_email: &str, - ) -> Result; - fn find_by_username(conn: &PgConnection, username: &str) -> Result; - fn find_by_email(conn: &PgConnection, from_email: &str) -> Result; - fn get_profile_url(&self, hostname: &str) -> String; - fn mark_as_updated(conn: &PgConnection, user_id: i32) -> Result; - fn delete_account(conn: &PgConnection, user_id: i32) -> Result; -} - -impl User for User_ { - fn register(conn: &PgConnection, form: &UserForm) -> Result { - let mut edited_user = form.clone(); - let password_hash = - hash(&form.password_encrypted, DEFAULT_COST).expect("Couldn't hash password"); - edited_user.password_encrypted = password_hash; - - Self::create(&conn, &edited_user) - } - - // TODO do more individual updates like these - fn update_password(conn: &PgConnection, user_id: i32, new_password: &str) -> Result { - let password_hash = hash(new_password, DEFAULT_COST).expect("Couldn't hash password"); - - diesel::update(user_.find(user_id)) - .set(( - password_encrypted.eq(password_hash), - updated.eq(naive_now()), - )) - .get_result::(conn) - } - - fn read_from_name(conn: &PgConnection, from_user_name: &str) -> Result { - user_ - .filter(local.eq(true)) - .filter(deleted.eq(false)) - .filter(name.eq(from_user_name)) - .first::(conn) - } - - fn add_admin(conn: &PgConnection, user_id: i32, added: bool) -> Result { - diesel::update(user_.find(user_id)) - .set(admin.eq(added)) - .get_result::(conn) - } - - fn ban_user(conn: &PgConnection, user_id: i32, ban: bool) -> Result { - diesel::update(user_.find(user_id)) - .set(banned.eq(ban)) - .get_result::(conn) - } - - fn find_by_email_or_username( - conn: &PgConnection, - username_or_email: &str, - ) -> Result { - if is_email_regex(username_or_email) { - Self::find_by_email(conn, username_or_email) - } else { - Self::find_by_username(conn, username_or_email) - } - } - - fn find_by_username(conn: &PgConnection, username: &str) -> Result { - user_ - .filter(deleted.eq(false)) - .filter(local.eq(true)) - .filter(name.ilike(username)) - .first::(conn) - } - - fn find_by_email(conn: &PgConnection, from_email: &str) -> Result { - user_ - .filter(deleted.eq(false)) - .filter(local.eq(true)) - .filter(email.eq(from_email)) - .first::(conn) - } - - fn get_profile_url(&self, hostname: &str) -> String { - format!( - "{}://{}/u/{}", - Settings::get().get_protocol_string(), - hostname, - self.name - ) - } - - fn mark_as_updated(conn: &PgConnection, user_id: i32) -> Result { - diesel::update(user_.find(user_id)) - .set((last_refreshed_at.eq(naive_now()),)) - .get_result::(conn) - } - - fn delete_account(conn: &PgConnection, user_id: i32) -> Result { - diesel::update(user_.find(user_id)) - .set(( - preferred_username.eq::>(None), - email.eq::>(None), - matrix_user_id.eq::>(None), - bio.eq::>(None), - deleted.eq(true), - updated.eq(naive_now()), - )) - .get_result::(conn) - } -} - -#[cfg(test)] -mod tests { - use crate::{establish_unpooled_connection, source::user::*, ListingType, SortType}; - - #[test] - fn test_crud() { - let conn = establish_unpooled_connection(); - - let new_user = UserForm { - name: "thommy".into(), - preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, - avatar: None, - banner: None, - admin: false, - banned: Some(false), - published: None, - updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, - actor_id: None, - bio: None, - local: true, - private_key: None, - public_key: None, - last_refreshed_at: None, - inbox_url: None, - shared_inbox_url: None, - }; - - let inserted_user = User_::create(&conn, &new_user).unwrap(); - - let expected_user = User_ { - id: inserted_user.id, - name: "thommy".into(), - preferred_username: None, - password_encrypted: "nope".into(), - email: None, - matrix_user_id: None, - avatar: None, - banner: None, - admin: false, - banned: false, - published: inserted_user.published, - updated: None, - show_nsfw: false, - theme: "browser".into(), - default_sort_type: SortType::Hot as i16, - default_listing_type: ListingType::Subscribed as i16, - lang: "browser".into(), - show_avatars: true, - send_notifications_to_email: false, - actor_id: inserted_user.actor_id.to_owned(), - bio: None, - local: true, - private_key: None, - public_key: None, - last_refreshed_at: inserted_user.published, - deleted: false, - inbox_url: inserted_user.inbox_url.to_owned(), - shared_inbox_url: None, - }; - - let read_user = User_::read(&conn, inserted_user.id).unwrap(); - let updated_user = User_::update(&conn, inserted_user.id, &new_user).unwrap(); - let num_deleted = User_::delete(&conn, inserted_user.id).unwrap(); - - assert_eq!(expected_user, read_user); - assert_eq!(expected_user, inserted_user); - assert_eq!(expected_user, updated_user); - assert_eq!(1, num_deleted); - } -} diff --git a/crates/db_schema/src/schema.rs b/crates/db_schema/src/schema.rs index 3786e00c..0641bdee 100644 --- a/crates/db_schema/src/schema.rs +++ b/crates/db_schema/src/schema.rs @@ -41,7 +41,7 @@ table! { table! { comment_like (id) { id -> Int4, - user_id -> Int4, + person_id -> Int4, comment_id -> Int4, post_id -> Int4, score -> Int2, @@ -67,7 +67,7 @@ table! { comment_saved (id) { id -> Int4, comment_id -> Int4, - user_id -> Int4, + person_id -> Int4, published -> Timestamp, } } @@ -91,9 +91,9 @@ table! { last_refreshed_at -> Timestamp, icon -> Nullable, banner -> Nullable, - followers_url -> Text, - inbox_url -> Text, - shared_inbox_url -> Nullable, + followers_url -> Varchar, + inbox_url -> Varchar, + shared_inbox_url -> Nullable, } } @@ -116,7 +116,7 @@ table! { community_follower (id) { id -> Int4, community_id -> Int4, - user_id -> Int4, + person_id -> Int4, published -> Timestamp, pending -> Nullable, } @@ -126,25 +126,43 @@ table! { community_moderator (id) { id -> Int4, community_id -> Int4, - user_id -> Int4, + person_id -> Int4, published -> Timestamp, } } table! { - community_user_ban (id) { + community_person_ban (id) { id -> Int4, community_id -> Int4, - user_id -> Int4, + person_id -> Int4, published -> Timestamp, } } +table! { + local_user (id) { + id -> Int4, + person_id -> Int4, + password_encrypted -> Text, + email -> Nullable, + admin -> Bool, + show_nsfw -> Bool, + theme -> Varchar, + default_sort_type -> Int2, + default_listing_type -> Int2, + lang -> Varchar, + show_avatars -> Bool, + send_notifications_to_email -> Bool, + matrix_user_id -> Nullable, + } +} + table! { mod_add (id) { id -> Int4, - mod_user_id -> Int4, - other_user_id -> Int4, + mod_person_id -> Int4, + other_person_id -> Int4, removed -> Nullable, when_ -> Timestamp, } @@ -153,8 +171,8 @@ table! { table! { mod_add_community (id) { id -> Int4, - mod_user_id -> Int4, - other_user_id -> Int4, + mod_person_id -> Int4, + other_person_id -> Int4, community_id -> Int4, removed -> Nullable, when_ -> Timestamp, @@ -164,8 +182,8 @@ table! { table! { mod_ban (id) { id -> Int4, - mod_user_id -> Int4, - other_user_id -> Int4, + mod_person_id -> Int4, + other_person_id -> Int4, reason -> Nullable, banned -> Nullable, expires -> Nullable, @@ -176,8 +194,8 @@ table! { table! { mod_ban_from_community (id) { id -> Int4, - mod_user_id -> Int4, - other_user_id -> Int4, + mod_person_id -> Int4, + other_person_id -> Int4, community_id -> Int4, reason -> Nullable, banned -> Nullable, @@ -189,7 +207,7 @@ table! { table! { mod_lock_post (id) { id -> Int4, - mod_user_id -> Int4, + mod_person_id -> Int4, post_id -> Int4, locked -> Nullable, when_ -> Timestamp, @@ -199,7 +217,7 @@ table! { table! { mod_remove_comment (id) { id -> Int4, - mod_user_id -> Int4, + mod_person_id -> Int4, comment_id -> Int4, reason -> Nullable, removed -> Nullable, @@ -210,7 +228,7 @@ table! { table! { mod_remove_community (id) { id -> Int4, - mod_user_id -> Int4, + mod_person_id -> Int4, community_id -> Int4, reason -> Nullable, removed -> Nullable, @@ -222,7 +240,7 @@ table! { table! { mod_remove_post (id) { id -> Int4, - mod_user_id -> Int4, + mod_person_id -> Int4, post_id -> Int4, reason -> Nullable, removed -> Nullable, @@ -233,7 +251,7 @@ table! { table! { mod_sticky_post (id) { id -> Int4, - mod_user_id -> Int4, + mod_person_id -> Int4, post_id -> Int4, stickied -> Nullable, when_ -> Timestamp, @@ -243,9 +261,60 @@ table! { table! { password_reset_request (id) { id -> Int4, - user_id -> Int4, token_encrypted -> Text, published -> Timestamp, + local_user_id -> Int4, + } +} + +table! { + person (id) { + id -> Int4, + name -> Varchar, + preferred_username -> Nullable, + avatar -> Nullable, + banned -> Bool, + published -> Timestamp, + updated -> Nullable, + actor_id -> Varchar, + bio -> Nullable, + local -> Bool, + private_key -> Nullable, + public_key -> Nullable, + last_refreshed_at -> Timestamp, + banner -> Nullable, + deleted -> Bool, + inbox_url -> Varchar, + shared_inbox_url -> Nullable, + } +} + +table! { + person_aggregates (id) { + id -> Int4, + person_id -> Int4, + post_count -> Int8, + post_score -> Int8, + comment_count -> Int8, + comment_score -> Int8, + } +} + +table! { + person_ban (id) { + id -> Int4, + person_id -> Int4, + published -> Timestamp, + } +} + +table! { + person_mention (id) { + id -> Int4, + recipient_id -> Int4, + comment_id -> Int4, + read -> Bool, + published -> Timestamp, } } @@ -292,7 +361,7 @@ table! { post_like (id) { id -> Int4, post_id -> Int4, - user_id -> Int4, + person_id -> Int4, score -> Int2, published -> Timestamp, } @@ -302,7 +371,7 @@ table! { post_read (id) { id -> Int4, post_id -> Int4, - user_id -> Int4, + person_id -> Int4, published -> Timestamp, } } @@ -327,7 +396,7 @@ table! { post_saved (id) { id -> Int4, post_id -> Int4, - user_id -> Int4, + person_id -> Int4, published -> Timestamp, } } @@ -378,68 +447,6 @@ table! { } } -table! { - user_ (id) { - id -> Int4, - name -> Varchar, - preferred_username -> Nullable, - password_encrypted -> Text, - email -> Nullable, - avatar -> Nullable, - admin -> Bool, - banned -> Bool, - published -> Timestamp, - updated -> Nullable, - show_nsfw -> Bool, - theme -> Varchar, - default_sort_type -> Int2, - default_listing_type -> Int2, - lang -> Varchar, - show_avatars -> Bool, - send_notifications_to_email -> Bool, - matrix_user_id -> Nullable, - actor_id -> Varchar, - bio -> Nullable, - local -> Bool, - private_key -> Nullable, - public_key -> Nullable, - last_refreshed_at -> Timestamp, - banner -> Nullable, - deleted -> Bool, - inbox_url -> Text, - shared_inbox_url -> Nullable, - } -} - -table! { - user_aggregates (id) { - id -> Int4, - user_id -> Int4, - post_count -> Int8, - post_score -> Int8, - comment_count -> Int8, - comment_score -> Int8, - } -} - -table! { - user_ban (id) { - id -> Int4, - user_id -> Int4, - published -> Timestamp, - } -} - -table! { - user_mention (id) { - id -> Int4, - recipient_id -> Int4, - comment_id -> Int4, - read -> Bool, - published -> Timestamp, - } -} - // These are necessary since diesel doesn't have self joins / aliases table! { comment_alias_1 (id) { @@ -459,25 +466,14 @@ table! { } table! { - user_alias_1 (id) { + person_alias_1 (id) { id -> Int4, name -> Varchar, preferred_username -> Nullable, - password_encrypted -> Text, - email -> Nullable, avatar -> Nullable, - admin -> Bool, banned -> Bool, published -> Timestamp, updated -> Nullable, - show_nsfw -> Bool, - theme -> Varchar, - default_sort_type -> Int2, - default_listing_type -> Int2, - lang -> Varchar, - show_avatars -> Bool, - send_notifications_to_email -> Bool, - matrix_user_id -> Nullable, actor_id -> Varchar, bio -> Nullable, local -> Bool, @@ -486,29 +482,20 @@ table! { last_refreshed_at -> Timestamp, banner -> Nullable, deleted -> Bool, + inbox_url -> Varchar, + shared_inbox_url -> Nullable, } } table! { - user_alias_2 (id) { + person_alias_2 (id) { id -> Int4, name -> Varchar, preferred_username -> Nullable, - password_encrypted -> Text, - email -> Nullable, avatar -> Nullable, - admin -> Bool, banned -> Bool, published -> Timestamp, updated -> Nullable, - show_nsfw -> Bool, - theme -> Varchar, - default_sort_type -> Int2, - default_listing_type -> Int2, - lang -> Varchar, - show_avatars -> Bool, - send_notifications_to_email -> Bool, - matrix_user_id -> Nullable, actor_id -> Varchar, bio -> Nullable, local -> Bool, @@ -517,64 +504,67 @@ table! { last_refreshed_at -> Timestamp, banner -> Nullable, deleted -> Bool, + inbox_url -> Varchar, + shared_inbox_url -> Nullable, } } -joinable!(comment_alias_1 -> user_alias_1 (creator_id)); +joinable!(comment_alias_1 -> person_alias_1 (creator_id)); joinable!(comment -> comment_alias_1 (parent_id)); -joinable!(user_mention -> user_alias_1 (recipient_id)); -joinable!(post -> user_alias_1 (creator_id)); -joinable!(comment -> user_alias_1 (creator_id)); +joinable!(person_mention -> person_alias_1 (recipient_id)); +joinable!(post -> person_alias_1 (creator_id)); +joinable!(comment -> person_alias_1 (creator_id)); -joinable!(post_report -> user_alias_2 (resolver_id)); -joinable!(comment_report -> user_alias_2 (resolver_id)); +joinable!(post_report -> person_alias_2 (resolver_id)); +joinable!(comment_report -> person_alias_2 (resolver_id)); +joinable!(comment -> person (creator_id)); joinable!(comment -> post (post_id)); -joinable!(comment -> user_ (creator_id)); joinable!(comment_aggregates -> comment (comment_id)); joinable!(comment_like -> comment (comment_id)); +joinable!(comment_like -> person (person_id)); joinable!(comment_like -> post (post_id)); -joinable!(comment_like -> user_ (user_id)); joinable!(comment_report -> comment (comment_id)); joinable!(comment_saved -> comment (comment_id)); -joinable!(comment_saved -> user_ (user_id)); -joinable!(community -> user_ (creator_id)); +joinable!(comment_saved -> person (person_id)); +joinable!(community -> person (creator_id)); joinable!(community_aggregates -> community (community_id)); joinable!(community_follower -> community (community_id)); -joinable!(community_follower -> user_ (user_id)); +joinable!(community_follower -> person (person_id)); joinable!(community_moderator -> community (community_id)); -joinable!(community_moderator -> user_ (user_id)); -joinable!(community_user_ban -> community (community_id)); -joinable!(community_user_ban -> user_ (user_id)); +joinable!(community_moderator -> person (person_id)); +joinable!(community_person_ban -> community (community_id)); +joinable!(community_person_ban -> person (person_id)); +joinable!(local_user -> person (person_id)); joinable!(mod_add_community -> community (community_id)); joinable!(mod_ban_from_community -> community (community_id)); +joinable!(mod_lock_post -> person (mod_person_id)); joinable!(mod_lock_post -> post (post_id)); -joinable!(mod_lock_post -> user_ (mod_user_id)); joinable!(mod_remove_comment -> comment (comment_id)); -joinable!(mod_remove_comment -> user_ (mod_user_id)); +joinable!(mod_remove_comment -> person (mod_person_id)); joinable!(mod_remove_community -> community (community_id)); -joinable!(mod_remove_community -> user_ (mod_user_id)); +joinable!(mod_remove_community -> person (mod_person_id)); +joinable!(mod_remove_post -> person (mod_person_id)); joinable!(mod_remove_post -> post (post_id)); -joinable!(mod_remove_post -> user_ (mod_user_id)); +joinable!(mod_sticky_post -> person (mod_person_id)); joinable!(mod_sticky_post -> post (post_id)); -joinable!(mod_sticky_post -> user_ (mod_user_id)); -joinable!(password_reset_request -> user_ (user_id)); +joinable!(password_reset_request -> local_user (local_user_id)); +joinable!(person_aggregates -> person (person_id)); +joinable!(person_ban -> person (person_id)); +joinable!(person_mention -> comment (comment_id)); +joinable!(person_mention -> person (recipient_id)); joinable!(post -> community (community_id)); -joinable!(post -> user_ (creator_id)); +joinable!(post -> person (creator_id)); joinable!(post_aggregates -> post (post_id)); +joinable!(post_like -> person (person_id)); joinable!(post_like -> post (post_id)); -joinable!(post_like -> user_ (user_id)); +joinable!(post_read -> person (person_id)); joinable!(post_read -> post (post_id)); -joinable!(post_read -> user_ (user_id)); joinable!(post_report -> post (post_id)); +joinable!(post_saved -> person (person_id)); joinable!(post_saved -> post (post_id)); -joinable!(post_saved -> user_ (user_id)); -joinable!(site -> user_ (creator_id)); +joinable!(site -> person (creator_id)); joinable!(site_aggregates -> site (site_id)); -joinable!(user_aggregates -> user_ (user_id)); -joinable!(user_ban -> user_ (user_id)); -joinable!(user_mention -> comment (comment_id)); -joinable!(user_mention -> user_ (recipient_id)); allow_tables_to_appear_in_same_query!( activity, @@ -587,7 +577,8 @@ allow_tables_to_appear_in_same_query!( community_aggregates, community_follower, community_moderator, - community_user_ban, + community_person_ban, + local_user, mod_add, mod_add_community, mod_ban, @@ -598,6 +589,10 @@ allow_tables_to_appear_in_same_query!( mod_remove_post, mod_sticky_post, password_reset_request, + person, + person_aggregates, + person_ban, + person_mention, post, post_aggregates, post_like, @@ -607,11 +602,7 @@ allow_tables_to_appear_in_same_query!( private_message, site, site_aggregates, - user_, - user_aggregates, - user_ban, - user_mention, comment_alias_1, - user_alias_1, - user_alias_2, + person_alias_1, + person_alias_2, ); diff --git a/crates/db_schema/src/source/comment.rs b/crates/db_schema/src/source/comment.rs index 72b9e740..7871d1dd 100644 --- a/crates/db_schema/src/source/comment.rs +++ b/crates/db_schema/src/source/comment.rs @@ -69,7 +69,7 @@ pub struct CommentForm { #[table_name = "comment_like"] pub struct CommentLike { pub id: i32, - pub user_id: i32, + pub person_id: i32, pub comment_id: i32, pub post_id: i32, // TODO this is redundant pub score: i16, @@ -79,7 +79,7 @@ pub struct CommentLike { #[derive(Insertable, AsChangeset, Clone)] #[table_name = "comment_like"] pub struct CommentLikeForm { - pub user_id: i32, + pub person_id: i32, pub comment_id: i32, pub post_id: i32, // TODO this is redundant pub score: i16, @@ -91,7 +91,7 @@ pub struct CommentLikeForm { pub struct CommentSaved { pub id: i32, pub comment_id: i32, - pub user_id: i32, + pub person_id: i32, pub published: chrono::NaiveDateTime, } @@ -99,5 +99,5 @@ pub struct CommentSaved { #[table_name = "comment_saved"] pub struct CommentSavedForm { pub comment_id: i32, - pub user_id: i32, + pub person_id: i32, } diff --git a/crates/db_schema/src/source/community.rs b/crates/db_schema/src/source/community.rs index b8702ca9..bc99a575 100644 --- a/crates/db_schema/src/source/community.rs +++ b/crates/db_schema/src/source/community.rs @@ -1,5 +1,5 @@ use crate::{ - schema::{community, community_follower, community_moderator, community_user_ban}, + schema::{community, community_follower, community_moderator, community_person_ban}, Url, }; use serde::Serialize; @@ -79,7 +79,7 @@ pub struct CommunityForm { pub struct CommunityModerator { pub id: i32, pub community_id: i32, - pub user_id: i32, + pub person_id: i32, pub published: chrono::NaiveDateTime, } @@ -87,24 +87,24 @@ pub struct CommunityModerator { #[table_name = "community_moderator"] pub struct CommunityModeratorForm { pub community_id: i32, - pub user_id: i32, + pub person_id: i32, } #[derive(Identifiable, Queryable, Associations, PartialEq, Debug)] #[belongs_to(Community)] -#[table_name = "community_user_ban"] -pub struct CommunityUserBan { +#[table_name = "community_person_ban"] +pub struct CommunityPersonBan { pub id: i32, pub community_id: i32, - pub user_id: i32, + pub person_id: i32, pub published: chrono::NaiveDateTime, } #[derive(Insertable, AsChangeset, Clone)] -#[table_name = "community_user_ban"] -pub struct CommunityUserBanForm { +#[table_name = "community_person_ban"] +pub struct CommunityPersonBanForm { pub community_id: i32, - pub user_id: i32, + pub person_id: i32, } #[derive(Identifiable, Queryable, Associations, PartialEq, Debug)] @@ -113,7 +113,7 @@ pub struct CommunityUserBanForm { pub struct CommunityFollower { pub id: i32, pub community_id: i32, - pub user_id: i32, + pub person_id: i32, pub published: chrono::NaiveDateTime, pub pending: Option, } @@ -122,6 +122,6 @@ pub struct CommunityFollower { #[table_name = "community_follower"] pub struct CommunityFollowerForm { pub community_id: i32, - pub user_id: i32, + pub person_id: i32, pub pending: bool, } diff --git a/crates/db_schema/src/source/local_user.rs b/crates/db_schema/src/source/local_user.rs new file mode 100644 index 00000000..c4300dfd --- /dev/null +++ b/crates/db_schema/src/source/local_user.rs @@ -0,0 +1,66 @@ +use crate::schema::local_user; +use serde::Serialize; + +#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)] +#[table_name = "local_user"] +pub struct LocalUser { + pub id: i32, + pub person_id: i32, + pub password_encrypted: String, + pub email: Option, + pub admin: bool, + pub show_nsfw: bool, + pub theme: String, + pub default_sort_type: i16, + pub default_listing_type: i16, + pub lang: String, + pub show_avatars: bool, + pub send_notifications_to_email: bool, + pub matrix_user_id: Option, +} + +// TODO redo these, check table defaults +#[derive(Insertable, AsChangeset, Clone)] +#[table_name = "local_user"] +pub struct LocalUserForm { + pub person_id: i32, + pub password_encrypted: String, + pub email: Option>, + pub admin: Option, + pub show_nsfw: Option, + pub theme: Option, + pub default_sort_type: Option, + pub default_listing_type: Option, + pub lang: Option, + pub show_avatars: Option, + pub send_notifications_to_email: Option, + pub matrix_user_id: Option>, +} + +/// A safe local user view, without settings, password, or email +#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)] +#[table_name = "local_user"] +pub struct LocalUserSafe { + pub id: i32, + pub person_id: i32, + pub admin: bool, + pub matrix_user_id: Option, +} + +/// A local user view that removes password encrypted +#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)] +#[table_name = "local_user"] +pub struct LocalUserSettings{ + pub id: i32, + pub person_id: i32, + pub email: Option, + pub admin: bool, + pub show_nsfw: bool, + pub theme: String, + pub default_sort_type: i16, + pub default_listing_type: i16, + pub lang: String, + pub show_avatars: bool, + pub send_notifications_to_email: bool, + pub matrix_user_id: Option, +} diff --git a/crates/db_schema/src/source/mod.rs b/crates/db_schema/src/source/mod.rs index a39dc110..4882ddf4 100644 --- a/crates/db_schema/src/source/mod.rs +++ b/crates/db_schema/src/source/mod.rs @@ -8,5 +8,6 @@ pub mod post; pub mod post_report; pub mod private_message; pub mod site; -pub mod user; -pub mod user_mention; +pub mod person; +pub mod person_mention; +pub mod local_user; diff --git a/crates/db_schema/src/source/moderator.rs b/crates/db_schema/src/source/moderator.rs index d1a5d830..dc890f16 100644 --- a/crates/db_schema/src/source/moderator.rs +++ b/crates/db_schema/src/source/moderator.rs @@ -15,7 +15,7 @@ use serde::Serialize; #[table_name = "mod_remove_post"] pub struct ModRemovePost { pub id: i32, - pub mod_user_id: i32, + pub mod_person_id: i32, pub post_id: i32, pub reason: Option, pub removed: Option, @@ -25,7 +25,7 @@ pub struct ModRemovePost { #[derive(Insertable, AsChangeset)] #[table_name = "mod_remove_post"] pub struct ModRemovePostForm { - pub mod_user_id: i32, + pub mod_person_id: i32, pub post_id: i32, pub reason: Option, pub removed: Option, @@ -35,7 +35,7 @@ pub struct ModRemovePostForm { #[table_name = "mod_lock_post"] pub struct ModLockPost { pub id: i32, - pub mod_user_id: i32, + pub mod_person_id: i32, pub post_id: i32, pub locked: Option, pub when_: chrono::NaiveDateTime, @@ -44,7 +44,7 @@ pub struct ModLockPost { #[derive(Insertable, AsChangeset)] #[table_name = "mod_lock_post"] pub struct ModLockPostForm { - pub mod_user_id: i32, + pub mod_person_id: i32, pub post_id: i32, pub locked: Option, } @@ -53,7 +53,7 @@ pub struct ModLockPostForm { #[table_name = "mod_sticky_post"] pub struct ModStickyPost { pub id: i32, - pub mod_user_id: i32, + pub mod_person_id: i32, pub post_id: i32, pub stickied: Option, pub when_: chrono::NaiveDateTime, @@ -62,7 +62,7 @@ pub struct ModStickyPost { #[derive(Insertable, AsChangeset)] #[table_name = "mod_sticky_post"] pub struct ModStickyPostForm { - pub mod_user_id: i32, + pub mod_person_id: i32, pub post_id: i32, pub stickied: Option, } @@ -71,7 +71,7 @@ pub struct ModStickyPostForm { #[table_name = "mod_remove_comment"] pub struct ModRemoveComment { pub id: i32, - pub mod_user_id: i32, + pub mod_person_id: i32, pub comment_id: i32, pub reason: Option, pub removed: Option, @@ -81,7 +81,7 @@ pub struct ModRemoveComment { #[derive(Insertable, AsChangeset)] #[table_name = "mod_remove_comment"] pub struct ModRemoveCommentForm { - pub mod_user_id: i32, + pub mod_person_id: i32, pub comment_id: i32, pub reason: Option, pub removed: Option, @@ -91,7 +91,7 @@ pub struct ModRemoveCommentForm { #[table_name = "mod_remove_community"] pub struct ModRemoveCommunity { pub id: i32, - pub mod_user_id: i32, + pub mod_person_id: i32, pub community_id: i32, pub reason: Option, pub removed: Option, @@ -102,7 +102,7 @@ pub struct ModRemoveCommunity { #[derive(Insertable, AsChangeset)] #[table_name = "mod_remove_community"] pub struct ModRemoveCommunityForm { - pub mod_user_id: i32, + pub mod_person_id: i32, pub community_id: i32, pub reason: Option, pub removed: Option, @@ -113,8 +113,8 @@ pub struct ModRemoveCommunityForm { #[table_name = "mod_ban_from_community"] pub struct ModBanFromCommunity { pub id: i32, - pub mod_user_id: i32, - pub other_user_id: i32, + pub mod_person_id: i32, + pub other_person_id: i32, pub community_id: i32, pub reason: Option, pub banned: Option, @@ -125,8 +125,8 @@ pub struct ModBanFromCommunity { #[derive(Insertable, AsChangeset)] #[table_name = "mod_ban_from_community"] pub struct ModBanFromCommunityForm { - pub mod_user_id: i32, - pub other_user_id: i32, + pub mod_person_id: i32, + pub other_person_id: i32, pub community_id: i32, pub reason: Option, pub banned: Option, @@ -137,8 +137,8 @@ pub struct ModBanFromCommunityForm { #[table_name = "mod_ban"] pub struct ModBan { pub id: i32, - pub mod_user_id: i32, - pub other_user_id: i32, + pub mod_person_id: i32, + pub other_person_id: i32, pub reason: Option, pub banned: Option, pub expires: Option, @@ -148,8 +148,8 @@ pub struct ModBan { #[derive(Insertable, AsChangeset)] #[table_name = "mod_ban"] pub struct ModBanForm { - pub mod_user_id: i32, - pub other_user_id: i32, + pub mod_person_id: i32, + pub other_person_id: i32, pub reason: Option, pub banned: Option, pub expires: Option, @@ -159,8 +159,8 @@ pub struct ModBanForm { #[table_name = "mod_add_community"] pub struct ModAddCommunity { pub id: i32, - pub mod_user_id: i32, - pub other_user_id: i32, + pub mod_person_id: i32, + pub other_person_id: i32, pub community_id: i32, pub removed: Option, pub when_: chrono::NaiveDateTime, @@ -169,8 +169,8 @@ pub struct ModAddCommunity { #[derive(Insertable, AsChangeset)] #[table_name = "mod_add_community"] pub struct ModAddCommunityForm { - pub mod_user_id: i32, - pub other_user_id: i32, + pub mod_person_id: i32, + pub other_person_id: i32, pub community_id: i32, pub removed: Option, } @@ -179,8 +179,8 @@ pub struct ModAddCommunityForm { #[table_name = "mod_add"] pub struct ModAdd { pub id: i32, - pub mod_user_id: i32, - pub other_user_id: i32, + pub mod_person_id: i32, + pub other_person_id: i32, pub removed: Option, pub when_: chrono::NaiveDateTime, } @@ -188,7 +188,7 @@ pub struct ModAdd { #[derive(Insertable, AsChangeset)] #[table_name = "mod_add"] pub struct ModAddForm { - pub mod_user_id: i32, - pub other_user_id: i32, + pub mod_person_id: i32, + pub other_person_id: i32, pub removed: Option, } diff --git a/crates/db_schema/src/source/password_reset_request.rs b/crates/db_schema/src/source/password_reset_request.rs index f81f28ef..ce1a423f 100644 --- a/crates/db_schema/src/source/password_reset_request.rs +++ b/crates/db_schema/src/source/password_reset_request.rs @@ -4,7 +4,7 @@ use crate::schema::password_reset_request; #[table_name = "password_reset_request"] pub struct PasswordResetRequest { pub id: i32, - pub user_id: i32, + pub local_user_id: i32, pub token_encrypted: String, pub published: chrono::NaiveDateTime, } @@ -12,6 +12,6 @@ pub struct PasswordResetRequest { #[derive(Insertable, AsChangeset)] #[table_name = "password_reset_request"] pub struct PasswordResetRequestForm { - pub user_id: i32, + pub local_user_id: i32, pub token_encrypted: String, } diff --git a/crates/db_schema/src/source/person.rs b/crates/db_schema/src/source/person.rs new file mode 100644 index 00000000..cd072077 --- /dev/null +++ b/crates/db_schema/src/source/person.rs @@ -0,0 +1,154 @@ +use crate::{ + schema::{person, person_alias_1, person_alias_2}, + Url, +}; +use serde::Serialize; + +#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)] +#[table_name = "person"] +pub struct Person { + pub id: i32, + pub name: String, + pub preferred_username: Option, + pub avatar: Option, + pub banned: bool, + pub published: chrono::NaiveDateTime, + pub updated: Option, + pub actor_id: Url, + pub bio: Option, + pub local: bool, + pub private_key: Option, + pub public_key: Option, + pub last_refreshed_at: chrono::NaiveDateTime, + pub banner: Option, + pub deleted: bool, + pub inbox_url: Url, + pub shared_inbox_url: Option, +} + +/// A safe representation of user, without the sensitive info +#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)] +#[table_name = "person"] +pub struct PersonSafe { + pub id: i32, + pub name: String, + pub preferred_username: Option, + pub avatar: Option, + pub banned: bool, + pub published: chrono::NaiveDateTime, + pub updated: Option, + pub actor_id: Url, + pub bio: Option, + pub local: bool, + pub last_refreshed_at: chrono::NaiveDateTime, + pub banner: Option, + pub deleted: bool, + pub inbox_url: Url, + pub shared_inbox_url: Option, +} + + +#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)] +#[table_name = "person_alias_1"] +pub struct PersonAlias1 { + pub id: i32, + pub name: String, + pub preferred_username: Option, + pub avatar: Option, + pub banned: bool, + pub published: chrono::NaiveDateTime, + pub updated: Option, + pub actor_id: Url, + pub bio: Option, + pub local: bool, + pub private_key: Option, + pub public_key: Option, + pub last_refreshed_at: chrono::NaiveDateTime, + pub banner: Option, + pub deleted: bool, + pub inbox_url: Url, + pub shared_inbox_url: Option, +} + +#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)] +#[table_name = "person_alias_1"] +pub struct PersonSafeAlias1 { + pub id: i32, + pub name: String, + pub preferred_username: Option, + pub avatar: Option, + pub banned: bool, + pub published: chrono::NaiveDateTime, + pub updated: Option, + pub actor_id: Url, + pub bio: Option, + pub local: bool, + pub last_refreshed_at: chrono::NaiveDateTime, + pub banner: Option, + pub deleted: bool, + pub inbox_url: Url, + pub shared_inbox_url: Option, +} + +#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)] +#[table_name = "person_alias_2"] +pub struct PersonAlias2 { + pub id: i32, + pub name: String, + pub preferred_username: Option, + pub avatar: Option, + pub banned: bool, + pub published: chrono::NaiveDateTime, + pub updated: Option, + pub actor_id: Url, + pub bio: Option, + pub local: bool, + pub private_key: Option, + pub public_key: Option, + pub last_refreshed_at: chrono::NaiveDateTime, + pub banner: Option, + pub deleted: bool, + pub inbox_url: Url, + pub shared_inbox_url: Option, +} + +#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)] +#[table_name = "person_alias_1"] +pub struct PersonSafeAlias2 { + pub id: i32, + pub name: String, + pub preferred_username: Option, + pub avatar: Option, + pub banned: bool, + pub published: chrono::NaiveDateTime, + pub updated: Option, + pub actor_id: Url, + pub bio: Option, + pub local: bool, + pub last_refreshed_at: chrono::NaiveDateTime, + pub banner: Option, + pub deleted: bool, + pub inbox_url: Url, + pub shared_inbox_url: Option, +} + +#[derive(Insertable, AsChangeset, Clone)] +#[table_name = "person"] +pub struct PersonForm { + pub name: String, + pub preferred_username: Option>, + pub avatar: Option>, + pub banned: Option, + pub published: Option, + pub updated: Option, + pub actor_id: Option, + pub bio: Option>, + pub local: Option, + pub private_key: Option>, + pub public_key: Option>, + pub last_refreshed_at: Option, + pub banner: Option>, + pub deleted: Option, + pub inbox_url: Option, + pub shared_inbox_url: Option>, +} diff --git a/crates/db_schema/src/source/user_mention.rs b/crates/db_schema/src/source/person_mention.rs similarity index 66% rename from crates/db_schema/src/source/user_mention.rs rename to crates/db_schema/src/source/person_mention.rs index 64fd5600..6ad9c078 100644 --- a/crates/db_schema/src/source/user_mention.rs +++ b/crates/db_schema/src/source/person_mention.rs @@ -1,10 +1,10 @@ -use crate::{schema::user_mention, source::comment::Comment}; +use crate::{schema::person_mention, source::comment::Comment}; use serde::Serialize; #[derive(Clone, Queryable, Associations, Identifiable, PartialEq, Debug, Serialize)] #[belongs_to(Comment)] -#[table_name = "user_mention"] -pub struct UserMention { +#[table_name = "person_mention"] +pub struct PersonMention { pub id: i32, pub recipient_id: i32, pub comment_id: i32, @@ -13,8 +13,8 @@ pub struct UserMention { } #[derive(Insertable, AsChangeset)] -#[table_name = "user_mention"] -pub struct UserMentionForm { +#[table_name = "person_mention"] +pub struct PersonMentionForm { pub recipient_id: i32, pub comment_id: i32, pub read: Option, diff --git a/crates/db_schema/src/source/post.rs b/crates/db_schema/src/source/post.rs index 4ec6b56d..03d6e7e8 100644 --- a/crates/db_schema/src/source/post.rs +++ b/crates/db_schema/src/source/post.rs @@ -57,7 +57,7 @@ pub struct PostForm { pub struct PostLike { pub id: i32, pub post_id: i32, - pub user_id: i32, + pub person_id: i32, pub score: i16, pub published: chrono::NaiveDateTime, } @@ -66,7 +66,7 @@ pub struct PostLike { #[table_name = "post_like"] pub struct PostLikeForm { pub post_id: i32, - pub user_id: i32, + pub person_id: i32, pub score: i16, } @@ -76,7 +76,7 @@ pub struct PostLikeForm { pub struct PostSaved { pub id: i32, pub post_id: i32, - pub user_id: i32, + pub person_id: i32, pub published: chrono::NaiveDateTime, } @@ -84,7 +84,7 @@ pub struct PostSaved { #[table_name = "post_saved"] pub struct PostSavedForm { pub post_id: i32, - pub user_id: i32, + pub person_id: i32, } #[derive(Identifiable, Queryable, Associations, PartialEq, Debug)] @@ -92,11 +92,8 @@ pub struct PostSavedForm { #[table_name = "post_read"] pub struct PostRead { pub id: i32, - pub post_id: i32, - - pub user_id: i32, - + pub person_id: i32, pub published: chrono::NaiveDateTime, } @@ -104,6 +101,5 @@ pub struct PostRead { #[table_name = "post_read"] pub struct PostReadForm { pub post_id: i32, - - pub user_id: i32, + pub person_id: i32, } diff --git a/crates/db_schema/src/source/user.rs b/crates/db_schema/src/source/user.rs deleted file mode 100644 index 17e8734c..00000000 --- a/crates/db_schema/src/source/user.rs +++ /dev/null @@ -1,220 +0,0 @@ -use crate::{ - schema::{user_, user_alias_1, user_alias_2}, - Url, -}; -use serde::Serialize; - -#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)] -#[table_name = "user_"] -pub struct User_ { - pub id: i32, // person - pub name: String, // person - pub preferred_username: Option, // person - pub password_encrypted: String, // local_user - pub email: Option, // local_user - pub avatar: Option, // person - pub admin: bool, // local_user - pub banned: bool, // person? - pub published: chrono::NaiveDateTime, // person - pub updated: Option, // person - pub show_nsfw: bool, // local_user - pub theme: String, // local_user - pub default_sort_type: i16, // local_user - pub default_listing_type: i16, // local_user - pub lang: String, // local_user - pub show_avatars: bool, // local_user - pub send_notifications_to_email: bool, // local_user - pub matrix_user_id: Option, // local_user - pub actor_id: Url, // person - pub bio: Option, // person - pub local: bool, // person - pub private_key: Option, // person - pub public_key: Option, // person - pub last_refreshed_at: chrono::NaiveDateTime, // person - pub banner: Option, // person - pub deleted: bool, // person - pub inbox_url: Url, // person - pub shared_inbox_url: Option, // person -} - -/// A safe representation of user, without the sensitive info -#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)] -#[table_name = "user_"] -pub struct UserSafe { - pub id: i32, - pub name: String, - pub preferred_username: Option, - pub avatar: Option, - pub admin: bool, - pub banned: bool, - pub published: chrono::NaiveDateTime, - pub updated: Option, - pub matrix_user_id: Option, - pub actor_id: Url, - pub bio: Option, - pub local: bool, - pub banner: Option, - pub deleted: bool, - pub inbox_url: Url, - pub shared_inbox_url: Option, -} - -/// A safe user view with only settings -#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)] -#[table_name = "user_"] -pub struct UserSafeSettings { - pub id: i32, - pub name: String, - pub preferred_username: Option, - pub email: Option, - pub avatar: Option, - pub admin: bool, - pub banned: bool, - pub published: chrono::NaiveDateTime, - pub updated: Option, - pub show_nsfw: bool, - pub theme: String, - pub default_sort_type: i16, - pub default_listing_type: i16, - pub lang: String, - pub show_avatars: bool, - pub send_notifications_to_email: bool, - pub matrix_user_id: Option, - pub actor_id: Url, - pub bio: Option, - pub local: bool, - pub last_refreshed_at: chrono::NaiveDateTime, - pub banner: Option, - pub deleted: bool, -} - -#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)] -#[table_name = "user_alias_1"] -pub struct UserAlias1 { - pub id: i32, - pub name: String, - pub preferred_username: Option, - pub password_encrypted: String, - pub email: Option, - pub avatar: Option, - pub admin: bool, - pub banned: bool, - pub published: chrono::NaiveDateTime, - pub updated: Option, - pub show_nsfw: bool, - pub theme: String, - pub default_sort_type: i16, - pub default_listing_type: i16, - pub lang: String, - pub show_avatars: bool, - pub send_notifications_to_email: bool, - pub matrix_user_id: Option, - pub actor_id: Url, - pub bio: Option, - pub local: bool, - pub private_key: Option, - pub public_key: Option, - pub last_refreshed_at: chrono::NaiveDateTime, - pub banner: Option, - pub deleted: bool, -} - -#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)] -#[table_name = "user_alias_1"] -pub struct UserSafeAlias1 { - pub id: i32, - pub name: String, - pub preferred_username: Option, - pub avatar: Option, - pub admin: bool, - pub banned: bool, - pub published: chrono::NaiveDateTime, - pub updated: Option, - pub matrix_user_id: Option, - pub actor_id: Url, - pub bio: Option, - pub local: bool, - pub banner: Option, - pub deleted: bool, -} - -#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)] -#[table_name = "user_alias_2"] -pub struct UserAlias2 { - pub id: i32, - pub name: String, - pub preferred_username: Option, - pub password_encrypted: String, - pub email: Option, - pub avatar: Option, - pub admin: bool, - pub banned: bool, - pub published: chrono::NaiveDateTime, - pub updated: Option, - pub show_nsfw: bool, - pub theme: String, - pub default_sort_type: i16, - pub default_listing_type: i16, - pub lang: String, - pub show_avatars: bool, - pub send_notifications_to_email: bool, - pub matrix_user_id: Option, - pub actor_id: Url, - pub bio: Option, - pub local: bool, - pub private_key: Option, - pub public_key: Option, - pub last_refreshed_at: chrono::NaiveDateTime, - pub banner: Option, - pub deleted: bool, -} - -#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)] -#[table_name = "user_alias_2"] -pub struct UserSafeAlias2 { - pub id: i32, - pub name: String, - pub preferred_username: Option, - pub avatar: Option, - pub admin: bool, - pub banned: bool, - pub published: chrono::NaiveDateTime, - pub updated: Option, - pub matrix_user_id: Option, - pub actor_id: Url, - pub bio: Option, - pub local: bool, - pub banner: Option, - pub deleted: bool, -} - -#[derive(Insertable, AsChangeset, Clone)] -#[table_name = "user_"] -pub struct UserForm { - pub name: String, - pub preferred_username: Option>, - pub password_encrypted: String, - pub admin: bool, - pub banned: Option, - pub email: Option>, - pub avatar: Option>, - pub published: Option, - pub updated: Option, - pub show_nsfw: bool, - pub theme: String, - pub default_sort_type: i16, - pub default_listing_type: i16, - pub lang: String, - pub show_avatars: bool, - pub send_notifications_to_email: bool, - pub matrix_user_id: Option>, - pub actor_id: Option, - pub bio: Option>, - pub local: bool, - pub private_key: Option, - pub public_key: Option, - pub last_refreshed_at: Option, - pub banner: Option>, - pub inbox_url: Option, - pub shared_inbox_url: Option>, -} diff --git a/crates/db_views/src/comment_view.rs b/crates/db_views/src/comment_view.rs index 4f9a6a5f..0db27794 100644 --- a/crates/db_views/src/comment_view.rs +++ b/crates/db_views/src/comment_view.rs @@ -26,7 +26,7 @@ use lemmy_db_schema::{ }, source::{ comment::{Comment, CommentAlias1, CommentSaved}, - community::{Community, CommunityFollower, CommunitySafe, CommunityUserBan}, + community::{Community, CommunityFollower, CommunitySafe, CommunityPersonBan}, post::Post, user::{UserAlias1, UserSafe, UserSafeAlias1, User_}, }, @@ -55,7 +55,7 @@ type CommentViewTuple = ( Post, CommunitySafe, CommentAggregates, - Option, + Option, Option, Option, Option, @@ -545,7 +545,7 @@ mod tests { let comment_like_form = CommentLikeForm { comment_id: inserted_comment.id, post_id: inserted_post.id, - user_id: inserted_user.id, + person_id: inserted_user.id, score: 1, }; diff --git a/crates/db_views/src/post_view.rs b/crates/db_views/src/post_view.rs index ed1ef4ce..f56c2f9b 100644 --- a/crates/db_views/src/post_view.rs +++ b/crates/db_views/src/post_view.rs @@ -23,7 +23,7 @@ use lemmy_db_schema::{ user_, }, source::{ - community::{Community, CommunityFollower, CommunitySafe, CommunityUserBan}, + community::{Community, CommunityFollower, CommunitySafe, CommunityPersonBan}, post::{Post, PostRead, PostSaved}, user::{UserSafe, User_}, }, @@ -48,7 +48,7 @@ type PostViewTuple = ( Post, UserSafe, CommunitySafe, - Option, + Option, PostAggregates, Option, Option, @@ -523,7 +523,7 @@ mod tests { let post_like_form = PostLikeForm { post_id: inserted_post.id, - user_id: inserted_user.id, + person_id: inserted_user.id, score: 1, }; @@ -532,7 +532,7 @@ mod tests { let expected_post_like = PostLike { id: inserted_post_like.id, post_id: inserted_post.id, - user_id: inserted_user.id, + person_id: inserted_user.id, published: inserted_post_like.published, score: 1, }; diff --git a/crates/db_views_actor/src/user_mention_view.rs b/crates/db_views_actor/src/user_mention_view.rs index ffdbe030..dc37a880 100644 --- a/crates/db_views_actor/src/user_mention_view.rs +++ b/crates/db_views_actor/src/user_mention_view.rs @@ -24,7 +24,7 @@ use lemmy_db_schema::{ }, source::{ comment::{Comment, CommentSaved}, - community::{Community, CommunityFollower, CommunitySafe, CommunityUserBan}, + community::{Community, CommunityFollower, CommunitySafe, CommunityPersonBan}, post::Post, user::{UserAlias1, UserSafe, UserSafeAlias1, User_}, user_mention::UserMention, @@ -55,7 +55,7 @@ type UserMentionViewTuple = ( CommunitySafe, UserSafeAlias1, CommentAggregates, - Option, + Option, Option, Option, Option, -- 2.44.1