1 use lemmy_db_schema::newtypes::{CommunityId, PersonId};
3 comment_view::CommentView,
4 local_user_view::LocalUserSettingsView,
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,
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,
28 use lemmy_utils::Sensitive;
29 use serde::{Deserialize, Serialize};
31 #[derive(Serialize, Deserialize, Debug)]
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>>,
45 #[derive(Serialize, Deserialize, Debug)]
46 pub struct SearchResponse {
48 pub comments: Vec<CommentView>,
49 pub posts: Vec<PostView>,
50 pub communities: Vec<CommunityView>,
51 pub users: Vec<PersonViewSafe>,
54 #[derive(Serialize, Deserialize, Debug)]
55 pub struct ResolveObject {
57 pub auth: Option<Sensitive<String>>,
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>,
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>,
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>,
90 #[derive(Debug, Serialize, Deserialize)]
91 pub struct CreateSite {
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>,
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>,
118 #[derive(Debug, Serialize, Deserialize)]
120 pub auth: Option<Sensitive<String>>,
123 #[derive(Debug, Serialize, Deserialize, Clone)]
124 pub struct SiteResponse {
125 pub site_view: SiteView,
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>,
135 pub my_user: Option<MyUserInfo>,
136 pub federated_instances: Option<FederatedInstances>, // Federation may be disabled
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>,
148 #[derive(Debug, Serialize, Deserialize)]
149 pub struct TransferSite {
150 pub person_id: PersonId,
151 pub auth: Sensitive<String>,
154 #[derive(Debug, Serialize, Deserialize)]
155 pub struct GetSiteConfig {
156 pub auth: Sensitive<String>,
159 #[derive(Debug, Serialize, Deserialize)]
160 pub struct GetSiteConfigResponse {
161 pub config_hjson: String,
164 #[derive(Debug, Serialize, Deserialize)]
165 pub struct SaveSiteConfig {
166 pub config_hjson: String,
167 pub auth: Sensitive<String>,
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>>,