1 use crate::sensitive::Sensitive;
3 newtypes::{CommunityId, PersonId},
6 use lemmy_db_views_actor::structs::{CommunityModeratorView, CommunityView, PersonViewSafe};
7 use serde::{Deserialize, Serialize};
9 #[derive(Debug, Serialize, Deserialize)]
10 pub struct GetCommunity {
11 pub id: Option<CommunityId>,
12 /// Example: star_trek , or star_trek@xyz.tld
13 pub name: Option<String>,
14 pub auth: Option<Sensitive<String>>,
17 #[derive(Debug, Serialize, Deserialize)]
18 pub struct GetCommunityResponse {
19 pub community_view: CommunityView,
20 pub site: Option<Site>,
21 pub moderators: Vec<CommunityModeratorView>,
25 #[derive(Debug, Serialize, Deserialize)]
26 pub struct CreateCommunity {
29 pub description: Option<String>,
30 pub icon: Option<String>,
31 pub banner: Option<String>,
32 pub nsfw: Option<bool>,
33 pub posting_restricted_to_mods: Option<bool>,
34 pub auth: Sensitive<String>,
37 #[derive(Debug, Serialize, Deserialize, Clone)]
38 pub struct CommunityResponse {
39 pub community_view: CommunityView,
42 #[derive(Serialize, Deserialize, Debug)]
43 pub struct ListCommunities {
44 pub type_: Option<String>,
45 pub sort: Option<String>,
46 pub page: Option<i64>,
47 pub limit: Option<i64>,
48 pub auth: Option<Sensitive<String>>,
51 #[derive(Serialize, Deserialize, Debug)]
52 pub struct ListCommunitiesResponse {
53 pub communities: Vec<CommunityView>,
56 #[derive(Debug, Serialize, Deserialize, Clone)]
57 pub struct BanFromCommunity {
58 pub community_id: CommunityId,
59 pub person_id: PersonId,
61 pub remove_data: Option<bool>,
62 pub reason: Option<String>,
63 pub expires: Option<i64>,
64 pub auth: Sensitive<String>,
67 #[derive(Debug, Serialize, Deserialize, Clone)]
68 pub struct BanFromCommunityResponse {
69 pub person_view: PersonViewSafe,
73 #[derive(Debug, Serialize, Deserialize)]
74 pub struct AddModToCommunity {
75 pub community_id: CommunityId,
76 pub person_id: PersonId,
78 pub auth: Sensitive<String>,
81 #[derive(Debug, Serialize, Deserialize, Clone)]
82 pub struct AddModToCommunityResponse {
83 pub moderators: Vec<CommunityModeratorView>,
86 #[derive(Debug, Serialize, Deserialize)]
87 pub struct EditCommunity {
88 pub community_id: CommunityId,
89 pub title: Option<String>,
90 pub description: Option<String>,
91 pub icon: Option<String>,
92 pub banner: Option<String>,
93 pub nsfw: Option<bool>,
94 pub posting_restricted_to_mods: Option<bool>,
95 pub auth: Sensitive<String>,
98 #[derive(Debug, Serialize, Deserialize)]
99 pub struct HideCommunity {
100 pub community_id: CommunityId,
102 pub reason: Option<String>,
103 pub auth: Sensitive<String>,
106 #[derive(Debug, Serialize, Deserialize)]
107 pub struct DeleteCommunity {
108 pub community_id: CommunityId,
110 pub auth: Sensitive<String>,
113 #[derive(Debug, Serialize, Deserialize)]
114 pub struct RemoveCommunity {
115 pub community_id: CommunityId,
117 pub reason: Option<String>,
118 pub expires: Option<i64>,
119 pub auth: Sensitive<String>,
122 #[derive(Debug, Serialize, Deserialize)]
123 pub struct FollowCommunity {
124 pub community_id: CommunityId,
126 pub auth: Sensitive<String>,
129 #[derive(Debug, Serialize, Deserialize)]
130 pub struct BlockCommunity {
131 pub community_id: CommunityId,
133 pub auth: Sensitive<String>,
136 #[derive(Debug, Serialize, Deserialize, Clone)]
137 pub struct BlockCommunityResponse {
138 pub community_view: CommunityView,
142 #[derive(Debug, Serialize, Deserialize)]
143 pub struct TransferCommunity {
144 pub community_id: CommunityId,
145 pub person_id: PersonId,
146 pub auth: Sensitive<String>,