]> Untitled Git - lemmy.git/blob - crates/api_common/src/site.rs
a707dd656ec6817a992ce5b5daf4e822abde822c
[lemmy.git] / crates / api_common / src / site.rs
1 use lemmy_db_schema::newtypes::{CommunityId, PersonId};
2 use lemmy_db_views::{
3   comment_view::CommentView,
4   local_user_view::LocalUserSettingsView,
5   post_view::PostView,
6   registration_application_view::RegistrationApplicationView,
7   site_view::SiteView,
8 };
9 use lemmy_db_views_actor::{
10   community_block_view::CommunityBlockView,
11   community_follower_view::CommunityFollowerView,
12   community_moderator_view::CommunityModeratorView,
13   community_view::CommunityView,
14   person_block_view::PersonBlockView,
15   person_view::PersonViewSafe,
16 };
17 use lemmy_db_views_moderator::{
18   mod_add_community_view::ModAddCommunityView,
19   mod_add_view::ModAddView,
20   mod_ban_from_community_view::ModBanFromCommunityView,
21   mod_ban_view::ModBanView,
22   mod_hide_community_view::ModHideCommunityView,
23   mod_lock_post_view::ModLockPostView,
24   mod_remove_comment_view::ModRemoveCommentView,
25   mod_remove_community_view::ModRemoveCommunityView,
26   mod_remove_post_view::ModRemovePostView,
27   mod_sticky_post_view::ModStickyPostView,
28   mod_transfer_community_view::ModTransferCommunityView,
29 };
30 use lemmy_utils::Sensitive;
31 use serde::{Deserialize, Serialize};
32
33 #[derive(Serialize, Deserialize, Debug)]
34 pub struct Search {
35   pub q: String,
36   pub community_id: Option<CommunityId>,
37   pub community_name: Option<String>,
38   pub creator_id: Option<PersonId>,
39   pub type_: Option<String>,
40   pub sort: Option<String>,
41   pub listing_type: Option<String>,
42   pub page: Option<i64>,
43   pub limit: Option<i64>,
44   pub auth: Option<Sensitive<String>>,
45 }
46
47 #[derive(Serialize, Deserialize, Debug)]
48 pub struct SearchResponse {
49   pub type_: String,
50   pub comments: Vec<CommentView>,
51   pub posts: Vec<PostView>,
52   pub communities: Vec<CommunityView>,
53   pub users: Vec<PersonViewSafe>,
54 }
55
56 #[derive(Serialize, Deserialize, Debug)]
57 pub struct ResolveObject {
58   pub q: String,
59   pub auth: Option<Sensitive<String>>,
60 }
61
62 #[derive(Debug, Serialize, Deserialize, Default)]
63 pub struct ResolveObjectResponse {
64   pub comment: Option<CommentView>,
65   pub post: Option<PostView>,
66   pub community: Option<CommunityView>,
67   pub person: Option<PersonViewSafe>,
68 }
69
70 #[derive(Debug, Serialize, Deserialize)]
71 pub struct GetModlog {
72   pub mod_person_id: Option<PersonId>,
73   pub community_id: Option<CommunityId>,
74   pub page: Option<i64>,
75   pub limit: Option<i64>,
76   pub auth: Option<Sensitive<String>>,
77 }
78
79 #[derive(Debug, Serialize, Deserialize)]
80 pub struct GetModlogResponse {
81   pub removed_posts: Vec<ModRemovePostView>,
82   pub locked_posts: Vec<ModLockPostView>,
83   pub stickied_posts: Vec<ModStickyPostView>,
84   pub removed_comments: Vec<ModRemoveCommentView>,
85   pub removed_communities: Vec<ModRemoveCommunityView>,
86   pub banned_from_community: Vec<ModBanFromCommunityView>,
87   pub banned: Vec<ModBanView>,
88   pub added_to_community: Vec<ModAddCommunityView>,
89   pub transferred_to_community: Vec<ModTransferCommunityView>,
90   pub added: Vec<ModAddView>,
91   pub hidden_communities: Vec<ModHideCommunityView>,
92 }
93
94 #[derive(Debug, Serialize, Deserialize)]
95 pub struct CreateSite {
96   pub name: String,
97   pub sidebar: Option<String>,
98   pub description: Option<String>,
99   pub icon: Option<String>,
100   pub banner: Option<String>,
101   pub enable_downvotes: Option<bool>,
102   pub open_registration: Option<bool>,
103   pub enable_nsfw: Option<bool>,
104   pub community_creation_admin_only: Option<bool>,
105   pub require_email_verification: Option<bool>,
106   pub require_application: Option<bool>,
107   pub application_question: Option<String>,
108   pub private_instance: Option<bool>,
109   pub auth: Sensitive<String>,
110 }
111
112 #[derive(Debug, Serialize, Deserialize)]
113 pub struct EditSite {
114   pub name: Option<String>,
115   pub sidebar: Option<String>,
116   pub description: Option<String>,
117   pub icon: Option<String>,
118   pub banner: Option<String>,
119   pub enable_downvotes: Option<bool>,
120   pub open_registration: Option<bool>,
121   pub enable_nsfw: Option<bool>,
122   pub community_creation_admin_only: Option<bool>,
123   pub require_email_verification: Option<bool>,
124   pub require_application: Option<bool>,
125   pub application_question: Option<String>,
126   pub private_instance: Option<bool>,
127   pub auth: Sensitive<String>,
128 }
129
130 #[derive(Debug, Serialize, Deserialize)]
131 pub struct GetSite {
132   pub auth: Option<Sensitive<String>>,
133 }
134
135 #[derive(Debug, Serialize, Deserialize, Clone)]
136 pub struct SiteResponse {
137   pub site_view: SiteView,
138 }
139
140 #[derive(Debug, Serialize, Deserialize)]
141 pub struct GetSiteResponse {
142   pub site_view: Option<SiteView>, // Because the site might not be set up yet
143   pub admins: Vec<PersonViewSafe>,
144   pub online: usize,
145   pub version: String,
146   pub my_user: Option<MyUserInfo>,
147   pub federated_instances: Option<FederatedInstances>, // Federation may be disabled
148 }
149
150 #[derive(Debug, Serialize, Deserialize)]
151 pub struct MyUserInfo {
152   pub local_user_view: LocalUserSettingsView,
153   pub follows: Vec<CommunityFollowerView>,
154   pub moderates: Vec<CommunityModeratorView>,
155   pub community_blocks: Vec<CommunityBlockView>,
156   pub person_blocks: Vec<PersonBlockView>,
157 }
158
159 #[derive(Debug, Serialize, Deserialize)]
160 pub struct LeaveAdmin {
161   pub auth: Sensitive<String>,
162 }
163
164 #[derive(Debug, Serialize, Deserialize)]
165 pub struct GetSiteConfig {
166   pub auth: Sensitive<String>,
167 }
168
169 #[derive(Debug, Serialize, Deserialize)]
170 pub struct GetSiteConfigResponse {
171   pub config_hjson: String,
172 }
173
174 #[derive(Debug, Serialize, Deserialize)]
175 pub struct SaveSiteConfig {
176   pub config_hjson: String,
177   pub auth: Sensitive<String>,
178 }
179
180 #[derive(Debug, Serialize, Deserialize)]
181 pub struct FederatedInstances {
182   pub linked: Vec<String>,
183   pub allowed: Option<Vec<String>>,
184   pub blocked: Option<Vec<String>>,
185 }
186
187 #[derive(Serialize, Deserialize)]
188 pub struct ListRegistrationApplications {
189   /// Only shows the unread applications (IE those without an admin actor)
190   pub unread_only: Option<bool>,
191   pub page: Option<i64>,
192   pub limit: Option<i64>,
193   pub auth: String,
194 }
195
196 #[derive(Serialize, Deserialize)]
197 pub struct ListRegistrationApplicationsResponse {
198   pub registration_applications: Vec<RegistrationApplicationView>,
199 }
200
201 #[derive(Serialize, Deserialize)]
202 pub struct ApproveRegistrationApplication {
203   pub id: i32,
204   pub approve: bool,
205   pub deny_reason: Option<String>,
206   pub auth: String,
207 }
208
209 #[derive(Serialize, Deserialize)]
210 pub struct RegistrationApplicationResponse {
211   pub registration_application: RegistrationApplicationView,
212 }
213
214 #[derive(Serialize, Deserialize)]
215 pub struct GetUnreadRegistrationApplicationCount {
216   pub auth: String,
217 }
218
219 #[derive(Serialize, Deserialize, Clone)]
220 pub struct GetUnreadRegistrationApplicationCountResponse {
221   pub registration_applications: i64,
222 }