use crate::sensitive::Sensitive; use lemmy_db_schema::{ newtypes::{CommunityId, LanguageId, PersonId}, source::site::Site, ListingType, SortType, }; use lemmy_db_views_actor::structs::{CommunityModeratorView, CommunityView, PersonViewSafe}; use serde::{Deserialize, Serialize}; #[derive(Debug, Serialize, Deserialize, Clone, Default)] pub struct GetCommunity { pub id: Option, /// Example: star_trek , or star_trek@xyz.tld pub name: Option, pub auth: Option>, } #[derive(Debug, Serialize, Deserialize, Clone)] pub struct GetCommunityResponse { pub community_view: CommunityView, pub site: Option, pub moderators: Vec, pub online: usize, pub discussion_languages: Vec, /// Default language used for new posts if none is specified, generated based on community and /// user languages. pub default_post_language: Option, } #[derive(Debug, Serialize, Deserialize, Clone, Default)] pub struct CreateCommunity { pub name: String, pub title: String, pub description: Option, pub icon: Option, pub banner: Option, pub nsfw: Option, pub posting_restricted_to_mods: Option, pub auth: Sensitive, } #[derive(Debug, Serialize, Deserialize, Clone)] pub struct CommunityResponse { pub community_view: CommunityView, } #[derive(Debug, Serialize, Deserialize, Clone, Default)] pub struct ListCommunities { pub type_: Option, pub sort: Option, pub page: Option, pub limit: Option, pub auth: Option>, } #[derive(Debug, Serialize, Deserialize, Clone)] pub struct ListCommunitiesResponse { pub communities: Vec, } #[derive(Debug, Serialize, Deserialize, Clone, Default)] pub struct BanFromCommunity { pub community_id: CommunityId, pub person_id: PersonId, pub ban: bool, pub remove_data: Option, pub reason: Option, pub expires: Option, pub auth: Sensitive, } #[derive(Debug, Serialize, Deserialize, Clone)] pub struct BanFromCommunityResponse { pub person_view: PersonViewSafe, pub banned: bool, } #[derive(Debug, Serialize, Deserialize, Clone, Default)] pub struct AddModToCommunity { pub community_id: CommunityId, pub person_id: PersonId, pub added: bool, pub auth: Sensitive, } #[derive(Debug, Serialize, Deserialize, Clone)] pub struct AddModToCommunityResponse { pub moderators: Vec, } #[derive(Debug, Serialize, Deserialize, Clone, Default)] pub struct EditCommunity { pub community_id: CommunityId, pub title: Option, pub description: Option, pub icon: Option, pub banner: Option, pub nsfw: Option, pub posting_restricted_to_mods: Option, pub discussion_languages: Option>, pub auth: Sensitive, } #[derive(Debug, Serialize, Deserialize, Clone, Default)] pub struct HideCommunity { pub community_id: CommunityId, pub hidden: bool, pub reason: Option, pub auth: Sensitive, } #[derive(Debug, Serialize, Deserialize, Clone, Default)] pub struct DeleteCommunity { pub community_id: CommunityId, pub deleted: bool, pub auth: Sensitive, } #[derive(Debug, Serialize, Deserialize, Clone, Default)] pub struct RemoveCommunity { pub community_id: CommunityId, pub removed: bool, pub reason: Option, pub expires: Option, pub auth: Sensitive, } #[derive(Debug, Serialize, Deserialize, Clone, Default)] pub struct FollowCommunity { pub community_id: CommunityId, pub follow: bool, pub auth: Sensitive, } #[derive(Debug, Serialize, Deserialize, Clone, Default)] pub struct BlockCommunity { pub community_id: CommunityId, pub block: bool, pub auth: Sensitive, } #[derive(Debug, Serialize, Deserialize, Clone)] pub struct BlockCommunityResponse { pub community_view: CommunityView, pub blocked: bool, } #[derive(Debug, Serialize, Deserialize, Clone, Default)] pub struct TransferCommunity { pub community_id: CommunityId, pub person_id: PersonId, pub auth: Sensitive, }