2 newtypes::{CommunityId, PersonId},
5 use lemmy_db_views_actor::{
6 community_moderator_view::CommunityModeratorView,
7 community_view::CommunityView,
8 person_view::PersonViewSafe,
10 use lemmy_utils::Sensitive;
11 use serde::{Deserialize, Serialize};
13 #[derive(Debug, Serialize, Deserialize)]
14 pub struct GetCommunity {
15 pub id: Option<CommunityId>,
16 /// Example: star_trek , or star_trek@xyz.tld
17 pub name: Option<String>,
18 pub auth: Option<Sensitive<String>>,
21 #[derive(Debug, Serialize, Deserialize)]
22 pub struct GetCommunityResponse {
23 pub community_view: CommunityView,
24 pub site: Option<Site>,
25 pub moderators: Vec<CommunityModeratorView>,
29 #[derive(Debug, Serialize, Deserialize)]
30 pub struct CreateCommunity {
33 pub description: Option<String>,
34 pub icon: Option<String>,
35 pub banner: Option<String>,
36 pub nsfw: Option<bool>,
37 pub posting_restricted_to_mods: Option<bool>,
38 pub auth: Sensitive<String>,
41 #[derive(Debug, Serialize, Deserialize, Clone)]
42 pub struct CommunityResponse {
43 pub community_view: CommunityView,
46 #[derive(Serialize, Deserialize, Debug)]
47 pub struct ListCommunities {
48 pub type_: Option<String>,
49 pub sort: Option<String>,
50 pub page: Option<i64>,
51 pub limit: Option<i64>,
52 pub auth: Option<Sensitive<String>>,
55 #[derive(Serialize, Deserialize, Debug)]
56 pub struct ListCommunitiesResponse {
57 pub communities: Vec<CommunityView>,
60 #[derive(Debug, Serialize, Deserialize, Clone)]
61 pub struct BanFromCommunity {
62 pub community_id: CommunityId,
63 pub person_id: PersonId,
65 pub remove_data: Option<bool>,
66 pub reason: Option<String>,
67 pub expires: Option<i64>,
68 pub auth: Sensitive<String>,
71 #[derive(Debug, Serialize, Deserialize, Clone)]
72 pub struct BanFromCommunityResponse {
73 pub person_view: PersonViewSafe,
77 #[derive(Debug, Serialize, Deserialize)]
78 pub struct AddModToCommunity {
79 pub community_id: CommunityId,
80 pub person_id: PersonId,
82 pub auth: Sensitive<String>,
85 #[derive(Debug, Serialize, Deserialize, Clone)]
86 pub struct AddModToCommunityResponse {
87 pub moderators: Vec<CommunityModeratorView>,
90 #[derive(Debug, Serialize, Deserialize)]
91 pub struct EditCommunity {
92 pub community_id: CommunityId,
93 pub title: Option<String>,
94 pub description: Option<String>,
95 pub icon: Option<String>,
96 pub banner: Option<String>,
97 pub nsfw: Option<bool>,
98 pub posting_restricted_to_mods: Option<bool>,
99 pub auth: Sensitive<String>,
102 #[derive(Debug, Serialize, Deserialize)]
103 pub struct HideCommunity {
104 pub community_id: CommunityId,
106 pub reason: Option<String>,
107 pub auth: Sensitive<String>,
110 #[derive(Debug, Serialize, Deserialize)]
111 pub struct DeleteCommunity {
112 pub community_id: CommunityId,
114 pub auth: Sensitive<String>,
117 #[derive(Debug, Serialize, Deserialize)]
118 pub struct RemoveCommunity {
119 pub community_id: CommunityId,
121 pub reason: Option<String>,
122 pub expires: Option<i64>,
123 pub auth: Sensitive<String>,
126 #[derive(Debug, Serialize, Deserialize)]
127 pub struct FollowCommunity {
128 pub community_id: CommunityId,
130 pub auth: Sensitive<String>,
133 #[derive(Debug, Serialize, Deserialize)]
134 pub struct BlockCommunity {
135 pub community_id: CommunityId,
137 pub auth: Sensitive<String>,
140 #[derive(Debug, Serialize, Deserialize, Clone)]
141 pub struct BlockCommunityResponse {
142 pub community_view: CommunityView,
146 #[derive(Debug, Serialize, Deserialize)]
147 pub struct TransferCommunity {
148 pub community_id: CommunityId,
149 pub person_id: PersonId,
150 pub auth: Sensitive<String>,