1 use crate::newtypes::{LocalSiteId, SiteId};
2 #[cfg(feature = "full")]
3 use crate::schema::local_site;
4 use serde::{Deserialize, Serialize};
5 use typed_builder::TypedBuilder;
7 #[derive(PartialEq, Eq, Debug, Clone, Serialize, Deserialize)]
8 #[cfg_attr(feature = "full", derive(Queryable, Identifiable))]
9 #[cfg_attr(feature = "full", diesel(table_name = local_site))]
10 #[cfg_attr(feature = "full", diesel(belongs_to(crate::source::site::Site)))]
11 pub struct LocalSite {
15 pub enable_downvotes: bool,
16 pub open_registration: bool,
17 pub enable_nsfw: bool,
18 pub community_creation_admin_only: bool,
19 pub require_email_verification: bool,
20 pub require_application: bool,
21 pub application_question: Option<String>,
22 pub private_instance: bool,
23 pub default_theme: String,
24 pub default_post_listing_type: String,
25 pub legal_information: Option<String>,
26 pub hide_modlog_mod_names: bool,
27 pub application_email_admins: bool,
28 pub slur_filter_regex: Option<String>,
29 pub actor_name_max_length: i32,
30 pub federation_enabled: bool,
31 pub federation_debug: bool,
32 pub federation_strict_allowlist: bool,
33 pub federation_http_fetch_retry_limit: i32,
34 pub federation_worker_count: i32,
35 pub captcha_enabled: bool,
36 pub captcha_difficulty: String,
37 pub published: chrono::NaiveDateTime,
38 pub updated: Option<chrono::NaiveDateTime>,
41 #[derive(Clone, TypedBuilder)]
42 #[builder(field_defaults(default))]
43 #[cfg_attr(feature = "full", derive(Insertable))]
44 #[cfg_attr(feature = "full", diesel(table_name = local_site))]
45 pub struct LocalSiteInsertForm {
48 pub site_setup: Option<bool>,
49 pub enable_downvotes: Option<bool>,
50 pub open_registration: Option<bool>,
51 pub enable_nsfw: Option<bool>,
52 pub community_creation_admin_only: Option<bool>,
53 pub require_email_verification: Option<bool>,
54 pub require_application: Option<bool>,
55 pub application_question: Option<String>,
56 pub private_instance: Option<bool>,
57 pub default_theme: Option<String>,
58 pub default_post_listing_type: Option<String>,
59 pub legal_information: Option<String>,
60 pub hide_modlog_mod_names: Option<bool>,
61 pub application_email_admins: Option<bool>,
62 pub slur_filter_regex: Option<String>,
63 pub actor_name_max_length: Option<i32>,
64 pub federation_enabled: Option<bool>,
65 pub federation_debug: Option<bool>,
66 pub federation_strict_allowlist: Option<bool>,
67 pub federation_http_fetch_retry_limit: Option<i32>,
68 pub federation_worker_count: Option<i32>,
69 pub captcha_enabled: Option<bool>,
70 pub captcha_difficulty: Option<String>,
73 #[derive(Clone, TypedBuilder)]
74 #[builder(field_defaults(default))]
75 #[cfg_attr(feature = "full", derive(AsChangeset))]
76 #[cfg_attr(feature = "full", diesel(table_name = local_site))]
77 pub struct LocalSiteUpdateForm {
78 pub site_setup: Option<bool>,
79 pub enable_downvotes: Option<bool>,
80 pub open_registration: Option<bool>,
81 pub enable_nsfw: Option<bool>,
82 pub community_creation_admin_only: Option<bool>,
83 pub require_email_verification: Option<bool>,
84 pub require_application: Option<bool>,
85 pub application_question: Option<Option<String>>,
86 pub private_instance: Option<bool>,
87 pub default_theme: Option<String>,
88 pub default_post_listing_type: Option<String>,
89 pub legal_information: Option<Option<String>>,
90 pub hide_modlog_mod_names: Option<bool>,
91 pub application_email_admins: Option<bool>,
92 pub slur_filter_regex: Option<Option<String>>,
93 pub actor_name_max_length: Option<i32>,
94 pub federation_enabled: Option<bool>,
95 pub federation_debug: Option<bool>,
96 pub federation_strict_allowlist: Option<bool>,
97 pub federation_http_fetch_retry_limit: Option<i32>,
98 pub federation_worker_count: Option<i32>,
99 pub captcha_enabled: Option<bool>,
100 pub captcha_difficulty: Option<String>,
101 pub updated: Option<Option<chrono::NaiveDateTime>>,