]> Untitled Git - lemmy.git/blob - crates/api_common/src/site.rs
First pass at invite-only migration. (#1949)
[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_lock_post_view::ModLockPostView,
23   mod_remove_comment_view::ModRemoveCommentView,
24   mod_remove_community_view::ModRemoveCommunityView,
25   mod_remove_post_view::ModRemovePostView,
26   mod_sticky_post_view::ModStickyPostView,
27   mod_transfer_community_view::ModTransferCommunityView,
28 };
29 use lemmy_utils::Sensitive;
30 use serde::{Deserialize, Serialize};
31
32 #[derive(Serialize, Deserialize, Debug)]
33 pub struct Search {
34   pub q: String,
35   pub community_id: Option<CommunityId>,
36   pub community_name: Option<String>,
37   pub creator_id: Option<PersonId>,
38   pub type_: Option<String>,
39   pub sort: Option<String>,
40   pub listing_type: Option<String>,
41   pub page: Option<i64>,
42   pub limit: Option<i64>,
43   pub auth: Option<Sensitive<String>>,
44 }
45
46 #[derive(Serialize, Deserialize, Debug)]
47 pub struct SearchResponse {
48   pub type_: String,
49   pub comments: Vec<CommentView>,
50   pub posts: Vec<PostView>,
51   pub communities: Vec<CommunityView>,
52   pub users: Vec<PersonViewSafe>,
53 }
54
55 #[derive(Serialize, Deserialize, Debug)]
56 pub struct ResolveObject {
57   pub q: String,
58   pub auth: Option<Sensitive<String>>,
59 }
60
61 #[derive(Debug, Serialize, Deserialize, Default)]
62 pub struct ResolveObjectResponse {
63   pub comment: Option<CommentView>,
64   pub post: Option<PostView>,
65   pub community: Option<CommunityView>,
66   pub person: Option<PersonViewSafe>,
67 }
68
69 #[derive(Debug, Serialize, Deserialize)]
70 pub struct GetModlog {
71   pub mod_person_id: Option<PersonId>,
72   pub community_id: Option<CommunityId>,
73   pub page: Option<i64>,
74   pub limit: Option<i64>,
75   pub auth: Option<Sensitive<String>>,
76 }
77
78 #[derive(Debug, Serialize, Deserialize)]
79 pub struct GetModlogResponse {
80   pub removed_posts: Vec<ModRemovePostView>,
81   pub locked_posts: Vec<ModLockPostView>,
82   pub stickied_posts: Vec<ModStickyPostView>,
83   pub removed_comments: Vec<ModRemoveCommentView>,
84   pub removed_communities: Vec<ModRemoveCommunityView>,
85   pub banned_from_community: Vec<ModBanFromCommunityView>,
86   pub banned: Vec<ModBanView>,
87   pub added_to_community: Vec<ModAddCommunityView>,
88   pub transferred_to_community: Vec<ModTransferCommunityView>,
89   pub added: Vec<ModAddView>,
90 }
91
92 #[derive(Debug, Serialize, Deserialize)]
93 pub struct CreateSite {
94   pub name: String,
95   pub sidebar: Option<String>,
96   pub description: Option<String>,
97   pub icon: Option<String>,
98   pub banner: Option<String>,
99   pub enable_downvotes: Option<bool>,
100   pub open_registration: Option<bool>,
101   pub enable_nsfw: Option<bool>,
102   pub community_creation_admin_only: Option<bool>,
103   pub require_email_verification: Option<bool>,
104   pub require_application: Option<bool>,
105   pub application_question: Option<String>,
106   pub private_instance: Option<bool>,
107   pub auth: Sensitive<String>,
108 }
109
110 #[derive(Debug, Serialize, Deserialize)]
111 pub struct EditSite {
112   pub name: Option<String>,
113   pub sidebar: Option<String>,
114   pub description: Option<String>,
115   pub icon: Option<String>,
116   pub banner: Option<String>,
117   pub enable_downvotes: Option<bool>,
118   pub open_registration: Option<bool>,
119   pub enable_nsfw: Option<bool>,
120   pub community_creation_admin_only: Option<bool>,
121   pub require_email_verification: Option<bool>,
122   pub require_application: Option<bool>,
123   pub application_question: Option<String>,
124   pub private_instance: Option<bool>,
125   pub auth: Sensitive<String>,
126 }
127
128 #[derive(Debug, Serialize, Deserialize)]
129 pub struct GetSite {
130   pub auth: Option<Sensitive<String>>,
131 }
132
133 #[derive(Debug, Serialize, Deserialize, Clone)]
134 pub struct SiteResponse {
135   pub site_view: SiteView,
136 }
137
138 #[derive(Debug, Serialize, Deserialize)]
139 pub struct GetSiteResponse {
140   pub site_view: Option<SiteView>, // Because the site might not be set up yet
141   pub admins: Vec<PersonViewSafe>,
142   pub banned: Vec<PersonViewSafe>,
143   pub online: usize,
144   pub version: String,
145   pub my_user: Option<MyUserInfo>,
146   pub federated_instances: Option<FederatedInstances>, // Federation may be disabled
147 }
148
149 #[derive(Debug, Serialize, Deserialize)]
150 pub struct MyUserInfo {
151   pub local_user_view: LocalUserSettingsView,
152   pub follows: Vec<CommunityFollowerView>,
153   pub moderates: Vec<CommunityModeratorView>,
154   pub community_blocks: Vec<CommunityBlockView>,
155   pub person_blocks: Vec<PersonBlockView>,
156 }
157
158 #[derive(Debug, Serialize, Deserialize)]
159 pub struct TransferSite {
160   pub person_id: PersonId,
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 }