]> Untitled Git - lemmy.git/blob - crates/api_common/src/site.rs
Don't drop error context when adding a message to errors (#1958)
[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   site_view::SiteView,
7 };
8 use lemmy_db_views_actor::{
9   community_block_view::CommunityBlockView,
10   community_follower_view::CommunityFollowerView,
11   community_moderator_view::CommunityModeratorView,
12   community_view::CommunityView,
13   person_block_view::PersonBlockView,
14   person_view::PersonViewSafe,
15 };
16 use lemmy_db_views_moderator::{
17   mod_add_community_view::ModAddCommunityView,
18   mod_add_view::ModAddView,
19   mod_ban_from_community_view::ModBanFromCommunityView,
20   mod_ban_view::ModBanView,
21   mod_lock_post_view::ModLockPostView,
22   mod_remove_comment_view::ModRemoveCommentView,
23   mod_remove_community_view::ModRemoveCommunityView,
24   mod_remove_post_view::ModRemovePostView,
25   mod_sticky_post_view::ModStickyPostView,
26   mod_transfer_community_view::ModTransferCommunityView,
27 };
28 use lemmy_utils::Sensitive;
29 use serde::{Deserialize, Serialize};
30
31 #[derive(Serialize, Deserialize, Debug)]
32 pub struct Search {
33   pub q: String,
34   pub community_id: Option<CommunityId>,
35   pub community_name: Option<String>,
36   pub creator_id: Option<PersonId>,
37   pub type_: Option<String>,
38   pub sort: Option<String>,
39   pub listing_type: Option<String>,
40   pub page: Option<i64>,
41   pub limit: Option<i64>,
42   pub auth: Option<Sensitive<String>>,
43 }
44
45 #[derive(Serialize, Deserialize, Debug)]
46 pub struct SearchResponse {
47   pub type_: String,
48   pub comments: Vec<CommentView>,
49   pub posts: Vec<PostView>,
50   pub communities: Vec<CommunityView>,
51   pub users: Vec<PersonViewSafe>,
52 }
53
54 #[derive(Serialize, Deserialize, Debug)]
55 pub struct ResolveObject {
56   pub q: String,
57   pub auth: Option<Sensitive<String>>,
58 }
59
60 #[derive(Debug, Serialize, Deserialize, Default)]
61 pub struct ResolveObjectResponse {
62   pub comment: Option<CommentView>,
63   pub post: Option<PostView>,
64   pub community: Option<CommunityView>,
65   pub person: Option<PersonViewSafe>,
66 }
67
68 #[derive(Debug, Serialize, Deserialize)]
69 pub struct GetModlog {
70   pub mod_person_id: Option<PersonId>,
71   pub community_id: Option<CommunityId>,
72   pub page: Option<i64>,
73   pub limit: Option<i64>,
74 }
75
76 #[derive(Debug, Serialize, Deserialize)]
77 pub struct GetModlogResponse {
78   pub removed_posts: Vec<ModRemovePostView>,
79   pub locked_posts: Vec<ModLockPostView>,
80   pub stickied_posts: Vec<ModStickyPostView>,
81   pub removed_comments: Vec<ModRemoveCommentView>,
82   pub removed_communities: Vec<ModRemoveCommunityView>,
83   pub banned_from_community: Vec<ModBanFromCommunityView>,
84   pub banned: Vec<ModBanView>,
85   pub added_to_community: Vec<ModAddCommunityView>,
86   pub transferred_to_community: Vec<ModTransferCommunityView>,
87   pub added: Vec<ModAddView>,
88 }
89
90 #[derive(Debug, Serialize, Deserialize)]
91 pub struct CreateSite {
92   pub name: String,
93   pub sidebar: Option<String>,
94   pub description: Option<String>,
95   pub icon: Option<String>,
96   pub banner: Option<String>,
97   pub enable_downvotes: Option<bool>,
98   pub open_registration: Option<bool>,
99   pub enable_nsfw: Option<bool>,
100   pub community_creation_admin_only: Option<bool>,
101   pub auth: Sensitive<String>,
102 }
103
104 #[derive(Debug, Serialize, Deserialize)]
105 pub struct EditSite {
106   pub name: Option<String>,
107   pub sidebar: Option<String>,
108   pub description: Option<String>,
109   pub icon: Option<String>,
110   pub banner: Option<String>,
111   pub enable_downvotes: Option<bool>,
112   pub open_registration: Option<bool>,
113   pub enable_nsfw: Option<bool>,
114   pub community_creation_admin_only: Option<bool>,
115   pub auth: Sensitive<String>,
116 }
117
118 #[derive(Debug, Serialize, Deserialize)]
119 pub struct GetSite {
120   pub auth: Option<Sensitive<String>>,
121 }
122
123 #[derive(Debug, Serialize, Deserialize, Clone)]
124 pub struct SiteResponse {
125   pub site_view: SiteView,
126 }
127
128 #[derive(Debug, Serialize, Deserialize)]
129 pub struct GetSiteResponse {
130   pub site_view: Option<SiteView>, // Because the site might not be set up yet
131   pub admins: Vec<PersonViewSafe>,
132   pub banned: Vec<PersonViewSafe>,
133   pub online: usize,
134   pub version: String,
135   pub my_user: Option<MyUserInfo>,
136   pub federated_instances: Option<FederatedInstances>, // Federation may be disabled
137 }
138
139 #[derive(Debug, Serialize, Deserialize)]
140 pub struct MyUserInfo {
141   pub local_user_view: LocalUserSettingsView,
142   pub follows: Vec<CommunityFollowerView>,
143   pub moderates: Vec<CommunityModeratorView>,
144   pub community_blocks: Vec<CommunityBlockView>,
145   pub person_blocks: Vec<PersonBlockView>,
146 }
147
148 #[derive(Debug, Serialize, Deserialize)]
149 pub struct TransferSite {
150   pub person_id: PersonId,
151   pub auth: Sensitive<String>,
152 }
153
154 #[derive(Debug, Serialize, Deserialize)]
155 pub struct GetSiteConfig {
156   pub auth: Sensitive<String>,
157 }
158
159 #[derive(Debug, Serialize, Deserialize)]
160 pub struct GetSiteConfigResponse {
161   pub config_hjson: String,
162 }
163
164 #[derive(Debug, Serialize, Deserialize)]
165 pub struct SaveSiteConfig {
166   pub config_hjson: String,
167   pub auth: Sensitive<String>,
168 }
169
170 #[derive(Debug, Serialize, Deserialize)]
171 pub struct FederatedInstances {
172   pub linked: Vec<String>,
173   pub allowed: Option<Vec<String>>,
174   pub blocked: Option<Vec<String>>,
175 }