From 300869d3970780ea9902ea6ac02567ea7482ef48 Mon Sep 17 00:00:00 2001 From: SleeplessOne1917 <28871516+SleeplessOne1917@users.noreply.github.com> Date: Sun, 11 Feb 2024 05:32:14 +0000 Subject: [PATCH] Make request models derive PartialEq, Eq, and Hash (#4443) * Make request models derive PartialEq, Eq, and Hash * Fix clippy error --------- Co-authored-by: SleeplessOne1917 --- crates/api_common/src/claims.rs | 2 +- crates/api_common/src/comment.rs | 24 ++++++++-------- crates/api_common/src/community.rs | 24 ++++++++-------- crates/api_common/src/custom_emoji.rs | 6 ++-- crates/api_common/src/person.rs | 36 ++++++++++++------------ crates/api_common/src/post.rs | 34 +++++++++++----------- crates/api_common/src/private_message.rs | 16 +++++------ crates/api_common/src/site.rs | 24 ++++++++-------- crates/api_crud/src/post/delete.rs | 2 +- crates/db_schema/src/lib.rs | 20 ++++++------- crates/db_views/src/structs.rs | 2 +- 11 files changed, 95 insertions(+), 95 deletions(-) diff --git a/crates/api_common/src/claims.rs b/crates/api_common/src/claims.rs index 981b7fe14..0a96f7455 100644 --- a/crates/api_common/src/claims.rs +++ b/crates/api_common/src/claims.rs @@ -9,7 +9,7 @@ use lemmy_db_schema::{ use lemmy_utils::error::{LemmyErrorExt, LemmyErrorType, LemmyResult}; use serde::{Deserialize, Serialize}; -#[derive(Debug, Serialize, Deserialize)] +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Hash)] pub struct Claims { /// local_user_id, standard claim by RFC 7519. pub sub: String, diff --git a/crates/api_common/src/comment.rs b/crates/api_common/src/comment.rs index 003e84d38..d2be07c17 100644 --- a/crates/api_common/src/comment.rs +++ b/crates/api_common/src/comment.rs @@ -10,7 +10,7 @@ use serde_with::skip_serializing_none; use ts_rs::TS; #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Create a comment. @@ -22,7 +22,7 @@ pub struct CreateComment { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, Copy, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Fetch an individual comment. @@ -31,7 +31,7 @@ pub struct GetComment { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Edit a comment. @@ -42,7 +42,7 @@ pub struct EditComment { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Distinguish a comment (IE speak as moderator). @@ -52,7 +52,7 @@ pub struct DistinguishComment { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Delete your own comment. @@ -62,7 +62,7 @@ pub struct DeleteComment { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Remove a comment (only doable by mods). @@ -72,7 +72,7 @@ pub struct RemoveComment { pub reason: Option, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Save / bookmark a comment. @@ -91,7 +91,7 @@ pub struct CommentResponse { pub recipient_ids: Vec, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Like a comment. @@ -102,7 +102,7 @@ pub struct CreateCommentLike { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Get a list of comments. @@ -146,7 +146,7 @@ pub struct CommentReportResponse { pub comment_report_view: CommentReportView, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Resolve a comment report (only doable by mods). @@ -156,7 +156,7 @@ pub struct ResolveCommentReport { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// List comment reports. @@ -178,7 +178,7 @@ pub struct ListCommentReportsResponse { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// List comment likes. Admins-only. diff --git a/crates/api_common/src/community.rs b/crates/api_common/src/community.rs index 2c7cc44f8..9d306ff7a 100644 --- a/crates/api_common/src/community.rs +++ b/crates/api_common/src/community.rs @@ -12,7 +12,7 @@ use serde_with::skip_serializing_none; use ts_rs::TS; #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Get a community. Must provide either an id, or a name. @@ -37,7 +37,7 @@ pub struct GetCommunityResponse { #[skip_serializing_none] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] /// Create a community. pub struct CreateCommunity { /// The unique name. @@ -68,7 +68,7 @@ pub struct CommunityResponse { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Fetches a list of communities. @@ -89,7 +89,7 @@ pub struct ListCommunitiesResponse { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Ban a user from a community. @@ -114,7 +114,7 @@ pub struct BanFromCommunityResponse { pub banned: bool, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Add a moderator to a community. @@ -133,7 +133,7 @@ pub struct AddModToCommunityResponse { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Edit a community. @@ -156,7 +156,7 @@ pub struct EditCommunity { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Hide a community from the main view. @@ -167,7 +167,7 @@ pub struct HideCommunity { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Delete your own community. @@ -177,7 +177,7 @@ pub struct DeleteCommunity { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Remove a community (only doable by moderators). @@ -187,7 +187,7 @@ pub struct RemoveCommunity { pub reason: Option, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Follow / subscribe to a community. @@ -196,7 +196,7 @@ pub struct FollowCommunity { pub follow: bool, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Block a community. @@ -215,7 +215,7 @@ pub struct BlockCommunityResponse { pub blocked: bool, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Transfer a community to a new owner. diff --git a/crates/api_common/src/custom_emoji.rs b/crates/api_common/src/custom_emoji.rs index d2900853e..468d2128d 100644 --- a/crates/api_common/src/custom_emoji.rs +++ b/crates/api_common/src/custom_emoji.rs @@ -5,7 +5,7 @@ use serde::{Deserialize, Serialize}; use ts_rs::TS; use url::Url; -#[derive(Debug, Serialize, Deserialize, Clone)] +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Create a custom emoji. @@ -18,7 +18,7 @@ pub struct CreateCustomEmoji { pub keywords: Vec, } -#[derive(Debug, Serialize, Deserialize, Clone)] +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Edit a custom emoji. @@ -31,7 +31,7 @@ pub struct EditCustomEmoji { pub keywords: Vec, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Delete a custom emoji. diff --git a/crates/api_common/src/person.rs b/crates/api_common/src/person.rs index af24a84cb..c5011d2f9 100644 --- a/crates/api_common/src/person.rs +++ b/crates/api_common/src/person.rs @@ -20,7 +20,7 @@ use serde_with::skip_serializing_none; use ts_rs::TS; #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Logging into lemmy. @@ -32,7 +32,7 @@ pub struct Login { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Register / Sign up to lemmy. @@ -77,7 +77,7 @@ pub struct CaptchaResponse { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Saves settings for your user. @@ -131,7 +131,7 @@ pub struct SaveUserSettings { pub collapse_bot_comments: Option, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Changes your account password. @@ -156,7 +156,7 @@ pub struct LoginResponse { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Gets a person's details. @@ -186,7 +186,7 @@ pub struct GetPersonDetailsResponse { pub moderates: Vec, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Adds an admin to a site. @@ -204,7 +204,7 @@ pub struct AddAdminResponse { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Ban a person from the site. @@ -238,7 +238,7 @@ pub struct BanPersonResponse { pub banned: bool, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Block a person. @@ -257,7 +257,7 @@ pub struct BlockPersonResponse { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Get comment replies. @@ -278,7 +278,7 @@ pub struct GetRepliesResponse { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Get mentions for your user. @@ -297,7 +297,7 @@ pub struct GetPersonMentionsResponse { pub mentions: Vec, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Mark a person mention as read. @@ -314,7 +314,7 @@ pub struct PersonMentionResponse { pub person_mention_view: PersonMentionView, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Mark a comment reply as read. @@ -331,7 +331,7 @@ pub struct CommentReplyResponse { pub comment_reply_view: CommentReplyView, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Delete your account. @@ -340,7 +340,7 @@ pub struct DeleteAccount { pub delete_content: bool, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Reset your password via email. @@ -348,7 +348,7 @@ pub struct PasswordReset { pub email: Sensitive, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Change your password after receiving a reset request. @@ -359,7 +359,7 @@ pub struct PasswordChangeAfterReset { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Get a count of the number of reports. @@ -389,7 +389,7 @@ pub struct GetUnreadCountResponse { pub private_messages: i64, } -#[derive(Serialize, Deserialize, Clone, Default, Debug)] +#[derive(Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Verify your email. @@ -404,7 +404,7 @@ pub struct GenerateTotpSecretResponse { pub totp_secret_url: Sensitive, } -#[derive(Debug, Serialize, Deserialize, Clone)] +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct UpdateTotp { diff --git a/crates/api_common/src/post.rs b/crates/api_common/src/post.rs index 8f482527c..36f971ca7 100644 --- a/crates/api_common/src/post.rs +++ b/crates/api_common/src/post.rs @@ -13,7 +13,7 @@ use ts_rs::TS; use url::Url; #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Create a post. @@ -38,7 +38,7 @@ pub struct PostResponse { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Get a post. Needs either the post id, or comment_id. @@ -61,7 +61,7 @@ pub struct GetPostResponse { } #[skip_serializing_none] -#[derive(Serialize, Deserialize, Debug, Clone, Default)] +#[derive(Serialize, Deserialize, Debug, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Get a list of posts. @@ -90,7 +90,7 @@ pub struct GetPostsResponse { pub next_page: Option, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Like a post. @@ -101,7 +101,7 @@ pub struct CreatePostLike { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Edit a post. @@ -116,7 +116,7 @@ pub struct EditPost { pub language_id: Option, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Delete a post. @@ -126,7 +126,7 @@ pub struct DeletePost { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Remove a post (only doable by mods). @@ -137,7 +137,7 @@ pub struct RemovePost { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Mark a post as read. @@ -148,7 +148,7 @@ pub struct MarkPostAsRead { pub read: bool, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Lock a post (prevent new comments). @@ -157,7 +157,7 @@ pub struct LockPost { pub locked: bool, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Feature a post (stickies / pins to the top). @@ -167,7 +167,7 @@ pub struct FeaturePost { pub feature_type: PostFeatureType, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Save / bookmark a post. @@ -193,7 +193,7 @@ pub struct PostReportResponse { pub post_report_view: PostReportView, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Resolve a post report (mods only). @@ -203,7 +203,7 @@ pub struct ResolvePostReport { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// List post reports. @@ -224,7 +224,7 @@ pub struct ListPostReportsResponse { pub post_reports: Vec, } -#[derive(Debug, Serialize, Deserialize, Clone)] +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Get metadata for a given site. @@ -242,7 +242,7 @@ pub struct GetSiteMetadataResponse { } #[skip_serializing_none] -#[derive(Debug, Deserialize, Serialize, PartialEq, Eq, Clone, Default)] +#[derive(Debug, Deserialize, Serialize, PartialEq, Eq, Clone, Default, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Site metadata, from its opengraph tags. @@ -255,7 +255,7 @@ pub struct LinkMetadata { } #[skip_serializing_none] -#[derive(Debug, Deserialize, Serialize, PartialEq, Eq, Clone, Default)] +#[derive(Debug, Deserialize, Serialize, PartialEq, Eq, Clone, Default, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Site metadata, from its opengraph tags. @@ -267,7 +267,7 @@ pub struct OpenGraphData { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// List post likes. Admins-only. diff --git a/crates/api_common/src/private_message.rs b/crates/api_common/src/private_message.rs index 8d469127d..429d68643 100644 --- a/crates/api_common/src/private_message.rs +++ b/crates/api_common/src/private_message.rs @@ -5,7 +5,7 @@ use serde_with::skip_serializing_none; #[cfg(feature = "full")] use ts_rs::TS; -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Create a private message. @@ -14,7 +14,7 @@ pub struct CreatePrivateMessage { pub recipient_id: PersonId, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Edit a private message. @@ -23,7 +23,7 @@ pub struct EditPrivateMessage { pub content: String, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Delete a private message. @@ -32,7 +32,7 @@ pub struct DeletePrivateMessage { pub deleted: bool, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Mark a private message as read. @@ -42,7 +42,7 @@ pub struct MarkPrivateMessageAsRead { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Get your private messages. @@ -69,7 +69,7 @@ pub struct PrivateMessageResponse { pub private_message_view: PrivateMessageView, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Create a report for a private message. @@ -86,7 +86,7 @@ pub struct PrivateMessageReportResponse { pub private_message_report_view: PrivateMessageReportView, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Resolve a private message report. @@ -96,7 +96,7 @@ pub struct ResolvePrivateMessageReport { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// List private message reports. diff --git a/crates/api_common/src/site.rs b/crates/api_common/src/site.rs index 2d83a12a4..3f02663c5 100644 --- a/crates/api_common/src/site.rs +++ b/crates/api_common/src/site.rs @@ -54,7 +54,7 @@ use serde_with::skip_serializing_none; use ts_rs::TS; #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Searches the site, given a query string, and some optional filters. @@ -83,7 +83,7 @@ pub struct SearchResponse { pub users: Vec, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Does an apub fetch for an object. @@ -106,7 +106,7 @@ pub struct ResolveObjectResponse { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Fetches the modlog. @@ -143,7 +143,7 @@ pub struct GetModlogResponse { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Creates a site. Should be done after first running lemmy. @@ -190,7 +190,7 @@ pub struct CreateSite { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Edits a site. @@ -363,7 +363,7 @@ pub struct InstanceWithFederationState { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone)] +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Purges a person from the database. This will delete all content attached to that person. @@ -373,7 +373,7 @@ pub struct PurgePerson { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone)] +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Purges a community from the database. This will delete all content attached to that community. @@ -383,7 +383,7 @@ pub struct PurgeCommunity { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone)] +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Purges a post from the database. This will delete all content attached to that post. @@ -393,7 +393,7 @@ pub struct PurgePost { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone)] +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Purges a comment from the database. This will delete all content attached to that comment. @@ -403,7 +403,7 @@ pub struct PurgeComment { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Fetches a list of registration applications. @@ -423,7 +423,7 @@ pub struct ListRegistrationApplicationsResponse { } #[skip_serializing_none] -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Approves a registration application. @@ -449,7 +449,7 @@ pub struct GetUnreadRegistrationApplicationCountResponse { pub registration_applications: i64, } -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// Block an instance as user diff --git a/crates/api_crud/src/post/delete.rs b/crates/api_crud/src/post/delete.rs index 630bfa357..a8fce28fc 100644 --- a/crates/api_crud/src/post/delete.rs +++ b/crates/api_crud/src/post/delete.rs @@ -52,7 +52,7 @@ pub async fn delete_post( .await?; ActivityChannel::submit_activity( - SendActivityData::DeletePost(post, local_user_view.person.clone(), data.0.clone()), + SendActivityData::DeletePost(post, local_user_view.person.clone(), data.0), &context, ) .await?; diff --git a/crates/db_schema/src/lib.rs b/crates/db_schema/src/lib.rs index 80942e179..7c1a6adc2 100644 --- a/crates/db_schema/src/lib.rs +++ b/crates/db_schema/src/lib.rs @@ -49,7 +49,7 @@ use strum_macros::{Display, EnumString}; use ts_rs::TS; #[derive( - EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Default, + EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Default, Hash, )] #[cfg_attr(feature = "full", derive(DbEnum, TS))] #[cfg_attr( @@ -83,7 +83,7 @@ pub enum SortType { Scaled, } -#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy)] +#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// The comment sort types. See here for descriptions: https://join-lemmy.org/docs/en/users/03-votes-and-ranking.html @@ -96,7 +96,7 @@ pub enum CommentSortType { } #[derive( - EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Default, + EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Default, Hash, )] #[cfg_attr(feature = "full", derive(DbEnum, TS))] #[cfg_attr( @@ -119,7 +119,7 @@ pub enum ListingType { } #[derive( - EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Default, + EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Default, Hash, )] #[cfg_attr(feature = "full", derive(DbEnum, TS))] #[cfg_attr( @@ -139,7 +139,7 @@ pub enum RegistrationMode { Open, } -#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq)] +#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(DbEnum, TS))] #[cfg_attr( feature = "full", @@ -157,7 +157,7 @@ pub enum PostListingMode { SmallCard, } -#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy)] +#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// The type of content returned from a search. @@ -170,7 +170,7 @@ pub enum SearchType { Url, } -#[derive(EnumString, Display, Debug, PartialEq, Eq, Serialize, Deserialize, Clone, Copy)] +#[derive(EnumString, Display, Debug, PartialEq, Eq, Serialize, Deserialize, Clone, Copy, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// A type / status for a community subscribe. @@ -180,7 +180,7 @@ pub enum SubscribedType { Pending, } -#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq)] +#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] /// A list of possible types for the various modlog actions. @@ -204,7 +204,7 @@ pub enum ModlogActionType { } #[derive( - EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, + EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash, )] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] @@ -218,7 +218,7 @@ pub enum PostFeatureType { } #[derive( - EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Default, + EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Default, Hash, )] #[cfg_attr(feature = "full", derive(DbEnum, TS))] #[cfg_attr( diff --git a/crates/db_views/src/structs.rs b/crates/db_views/src/structs.rs index 6ffef5fe0..e05d33242 100644 --- a/crates/db_views/src/structs.rs +++ b/crates/db_views/src/structs.rs @@ -98,7 +98,7 @@ pub struct PostReportView { /// currently this is just a wrapper around post id, but should be seen as opaque from the client's perspective /// stringified since we might want to use arbitrary info later, with a P prepended to prevent ossification /// (api users love to make assumptions (e.g. parse stuff that looks like numbers as numbers) about apis that aren't part of the spec -#[derive(Serialize, Deserialize, Debug, Clone)] +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Hash)] #[cfg_attr(feature = "full", derive(ts_rs::TS))] #[cfg_attr(feature = "full", ts(export))] pub struct PaginationCursor(pub String);