use crate::sensitive::Sensitive; use lemmy_db_schema::{ newtypes::{CommentId, CommunityId, LanguageId, PersonId, PostId}, source::{instance::Instance, language::Language, tagline::Tagline}, ListingType, ModlogActionType, RegistrationMode, SearchType, SortType, }; use lemmy_db_views::structs::{ CommentView, CustomEmojiView, LocalUserView, PostView, RegistrationApplicationView, SiteView, }; use lemmy_db_views_actor::structs::{ CommunityBlockView, CommunityFollowerView, CommunityModeratorView, CommunityView, PersonBlockView, PersonView, }; use lemmy_db_views_moderator::structs::{ AdminPurgeCommentView, AdminPurgeCommunityView, AdminPurgePersonView, AdminPurgePostView, ModAddCommunityView, ModAddView, ModBanFromCommunityView, ModBanView, ModFeaturePostView, ModHideCommunityView, ModLockPostView, ModRemoveCommentView, ModRemoveCommunityView, ModRemovePostView, ModTransferCommunityView, }; use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; #[cfg(feature = "full")] use ts_rs::TS; #[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone, Default)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct Search { pub q: String, pub community_id: Option, pub community_name: Option, pub creator_id: Option, pub type_: Option, pub sort: Option, pub listing_type: Option, pub page: Option, pub limit: Option, pub auth: Option>, } #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct SearchResponse { pub type_: SearchType, pub comments: Vec, pub posts: Vec, pub communities: Vec, pub users: Vec, } #[derive(Debug, Serialize, Deserialize, Clone, Default)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct ResolveObject { pub q: String, pub auth: Sensitive, } #[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Default)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] // TODO Change this to an enum pub struct ResolveObjectResponse { pub comment: Option, pub post: Option, pub community: Option, pub person: Option, } #[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone, Default)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct GetModlog { pub mod_person_id: Option, pub community_id: Option, pub page: Option, pub limit: Option, pub type_: Option, pub other_person_id: Option, pub auth: Option>, } #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct GetModlogResponse { pub removed_posts: Vec, pub locked_posts: Vec, pub featured_posts: Vec, pub removed_comments: Vec, pub removed_communities: Vec, pub banned_from_community: Vec, pub banned: Vec, pub added_to_community: Vec, pub transferred_to_community: Vec, pub added: Vec, pub admin_purged_persons: Vec, pub admin_purged_communities: Vec, pub admin_purged_posts: Vec, pub admin_purged_comments: Vec, pub hidden_communities: Vec, } #[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone, Default)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct CreateSite { pub name: String, pub sidebar: Option, pub description: Option, pub icon: Option, pub banner: Option, pub enable_downvotes: Option, pub enable_nsfw: Option, pub community_creation_admin_only: Option, pub require_email_verification: Option, pub application_question: Option, pub private_instance: Option, pub default_theme: Option, pub default_post_listing_type: Option, pub legal_information: Option, pub application_email_admins: Option, pub hide_modlog_mod_names: Option, pub discussion_languages: Option>, pub slur_filter_regex: Option, pub actor_name_max_length: Option, pub rate_limit_message: Option, pub rate_limit_message_per_second: Option, pub rate_limit_post: Option, pub rate_limit_post_per_second: Option, pub rate_limit_register: Option, pub rate_limit_register_per_second: Option, pub rate_limit_image: Option, pub rate_limit_image_per_second: Option, pub rate_limit_comment: Option, pub rate_limit_comment_per_second: Option, pub rate_limit_search: Option, pub rate_limit_search_per_second: Option, pub federation_enabled: Option, pub federation_debug: Option, pub federation_worker_count: Option, pub captcha_enabled: Option, pub captcha_difficulty: Option, pub allowed_instances: Option>, pub blocked_instances: Option>, pub taglines: Option>, pub registration_mode: Option, pub auth: Sensitive, } #[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone, Default)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct EditSite { pub name: Option, pub sidebar: Option, pub description: Option, pub icon: Option, pub banner: Option, pub enable_downvotes: Option, pub enable_nsfw: Option, pub community_creation_admin_only: Option, pub require_email_verification: Option, pub application_question: Option, pub private_instance: Option, pub default_theme: Option, pub default_post_listing_type: Option, pub legal_information: Option, pub application_email_admins: Option, pub hide_modlog_mod_names: Option, pub discussion_languages: Option>, pub slur_filter_regex: Option, pub actor_name_max_length: Option, pub rate_limit_message: Option, pub rate_limit_message_per_second: Option, pub rate_limit_post: Option, pub rate_limit_post_per_second: Option, pub rate_limit_register: Option, pub rate_limit_register_per_second: Option, pub rate_limit_image: Option, pub rate_limit_image_per_second: Option, pub rate_limit_comment: Option, pub rate_limit_comment_per_second: Option, pub rate_limit_search: Option, pub rate_limit_search_per_second: Option, pub federation_enabled: Option, pub federation_debug: Option, pub federation_worker_count: Option, pub captcha_enabled: Option, pub captcha_difficulty: Option, pub allowed_instances: Option>, pub blocked_instances: Option>, pub taglines: Option>, pub registration_mode: Option, pub reports_email_admins: Option, pub auth: Sensitive, } #[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone, Default)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct GetSite { pub auth: Option>, } #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct SiteResponse { pub site_view: SiteView, } #[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct GetSiteResponse { pub site_view: SiteView, pub admins: Vec, pub online: usize, pub version: String, pub my_user: Option, pub all_languages: Vec, pub discussion_languages: Vec, pub taglines: Vec, pub custom_emojis: Vec, } #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct GetFederatedInstances {} #[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct GetFederatedInstancesResponse { pub federated_instances: Option, // Federation may be disabled } #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct MyUserInfo { pub local_user_view: LocalUserView, pub follows: Vec, pub moderates: Vec, pub community_blocks: Vec, pub person_blocks: Vec, pub discussion_languages: Vec, } #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct LeaveAdmin { pub auth: Sensitive, } #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct FederatedInstances { pub linked: Vec, pub allowed: Vec, pub blocked: Vec, } #[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct PurgePerson { pub person_id: PersonId, pub reason: Option, pub auth: Sensitive, } #[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct PurgeCommunity { pub community_id: CommunityId, pub reason: Option, pub auth: Sensitive, } #[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct PurgePost { pub post_id: PostId, pub reason: Option, pub auth: Sensitive, } #[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct PurgeComment { pub comment_id: CommentId, pub reason: Option, pub auth: Sensitive, } #[derive(Serialize, Deserialize)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct PurgeItemResponse { pub success: bool, } #[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone, Default)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct ListRegistrationApplications { /// Only shows the unread applications (IE those without an admin actor) pub unread_only: Option, pub page: Option, pub limit: Option, pub auth: Sensitive, } #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct ListRegistrationApplicationsResponse { pub registration_applications: Vec, } #[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone, Default)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct ApproveRegistrationApplication { pub id: i32, pub approve: bool, pub deny_reason: Option, pub auth: Sensitive, } #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct RegistrationApplicationResponse { pub registration_application: RegistrationApplicationView, } #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct GetUnreadRegistrationApplicationCount { pub auth: Sensitive, } #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] pub struct GetUnreadRegistrationApplicationCountResponse { pub registration_applications: i64, }