]> Untitled Git - lemmy.git/blob - crates/db_schema/src/source/local_site.rs
Adding typescript generation for API. Fixes #2824 (#2827)
[lemmy.git] / crates / db_schema / src / source / local_site.rs
1 #[cfg(feature = "full")]
2 use crate::schema::local_site;
3 use crate::{
4   newtypes::{LocalSiteId, SiteId},
5   ListingType,
6   RegistrationMode,
7 };
8 use serde::{Deserialize, Serialize};
9 use serde_with::skip_serializing_none;
10 #[cfg(feature = "full")]
11 use ts_rs::TS;
12 use typed_builder::TypedBuilder;
13
14 #[skip_serializing_none]
15 #[derive(PartialEq, Eq, Debug, Clone, Serialize, Deserialize)]
16 #[cfg_attr(feature = "full", derive(Queryable, Identifiable, TS))]
17 #[cfg_attr(feature = "full", diesel(table_name = local_site))]
18 #[cfg_attr(feature = "full", diesel(belongs_to(crate::source::site::Site)))]
19 #[cfg_attr(feature = "full", ts(export))]
20 pub struct LocalSite {
21   pub id: LocalSiteId,
22   pub site_id: SiteId,
23   pub site_setup: bool,
24   pub enable_downvotes: bool,
25   pub enable_nsfw: bool,
26   pub community_creation_admin_only: bool,
27   pub require_email_verification: bool,
28   pub application_question: Option<String>,
29   pub private_instance: bool,
30   pub default_theme: String,
31   pub default_post_listing_type: ListingType,
32   pub legal_information: Option<String>,
33   pub hide_modlog_mod_names: bool,
34   pub application_email_admins: bool,
35   pub slur_filter_regex: Option<String>,
36   pub actor_name_max_length: i32,
37   pub federation_enabled: bool,
38   pub federation_debug: bool,
39   pub federation_worker_count: i32,
40   pub captcha_enabled: bool,
41   pub captcha_difficulty: String,
42   pub published: chrono::NaiveDateTime,
43   pub updated: Option<chrono::NaiveDateTime>,
44   pub registration_mode: RegistrationMode,
45   pub reports_email_admins: bool,
46 }
47
48 #[derive(Clone, TypedBuilder)]
49 #[builder(field_defaults(default))]
50 #[cfg_attr(feature = "full", derive(Insertable))]
51 #[cfg_attr(feature = "full", diesel(table_name = local_site))]
52 pub struct LocalSiteInsertForm {
53   #[builder(!default)]
54   pub site_id: SiteId,
55   pub site_setup: Option<bool>,
56   pub enable_downvotes: Option<bool>,
57   pub enable_nsfw: Option<bool>,
58   pub community_creation_admin_only: Option<bool>,
59   pub require_email_verification: Option<bool>,
60   pub application_question: Option<String>,
61   pub private_instance: Option<bool>,
62   pub default_theme: Option<String>,
63   pub default_post_listing_type: Option<ListingType>,
64   pub legal_information: Option<String>,
65   pub hide_modlog_mod_names: Option<bool>,
66   pub application_email_admins: Option<bool>,
67   pub slur_filter_regex: Option<String>,
68   pub actor_name_max_length: Option<i32>,
69   pub federation_enabled: Option<bool>,
70   pub federation_debug: Option<bool>,
71   pub federation_worker_count: Option<i32>,
72   pub captcha_enabled: Option<bool>,
73   pub captcha_difficulty: Option<String>,
74   pub registration_mode: Option<RegistrationMode>,
75   pub reports_email_admins: Option<bool>,
76 }
77
78 #[derive(Clone, TypedBuilder)]
79 #[builder(field_defaults(default))]
80 #[cfg_attr(feature = "full", derive(AsChangeset))]
81 #[cfg_attr(feature = "full", diesel(table_name = local_site))]
82 pub struct LocalSiteUpdateForm {
83   pub site_setup: Option<bool>,
84   pub enable_downvotes: Option<bool>,
85   pub enable_nsfw: Option<bool>,
86   pub community_creation_admin_only: Option<bool>,
87   pub require_email_verification: Option<bool>,
88   pub application_question: Option<Option<String>>,
89   pub private_instance: Option<bool>,
90   pub default_theme: Option<String>,
91   pub default_post_listing_type: Option<ListingType>,
92   pub legal_information: Option<Option<String>>,
93   pub hide_modlog_mod_names: Option<bool>,
94   pub application_email_admins: Option<bool>,
95   pub slur_filter_regex: Option<Option<String>>,
96   pub actor_name_max_length: Option<i32>,
97   pub federation_enabled: Option<bool>,
98   pub federation_debug: Option<bool>,
99   pub federation_worker_count: Option<i32>,
100   pub captcha_enabled: Option<bool>,
101   pub captcha_difficulty: Option<String>,
102   pub registration_mode: Option<RegistrationMode>,
103   pub reports_email_admins: Option<bool>,
104   pub updated: Option<Option<chrono::NaiveDateTime>>,
105 }