X-Git-Url: http://these/git/?a=blobdiff_plain;f=crates%2Fdb_schema%2Fsrc%2Fsource%2Flocal_site.rs;h=a57bf503c350dd88db6cdccc3b755c595acbd2a2;hb=969f8b2ce9cd80492eb5e556ce3bda95c9b892b3;hp=976516c5ff91ff03f88e922f7c90f3c5f2eb9eb6;hpb=ddb62681648cec473a19dce29861d48882e71943;p=lemmy.git diff --git a/crates/db_schema/src/source/local_site.rs b/crates/db_schema/src/source/local_site.rs index 976516c5..a57bf503 100644 --- a/crates/db_schema/src/source/local_site.rs +++ b/crates/db_schema/src/source/local_site.rs @@ -1,39 +1,64 @@ -use crate::newtypes::{LocalSiteId, SiteId}; #[cfg(feature = "full")] use crate::schema::local_site; +use crate::{ + newtypes::{LocalSiteId, SiteId}, + ListingType, + RegistrationMode, +}; use serde::{Deserialize, Serialize}; +use serde_with::skip_serializing_none; +#[cfg(feature = "full")] +use ts_rs::TS; use typed_builder::TypedBuilder; +#[skip_serializing_none] #[derive(PartialEq, Eq, Debug, Clone, Serialize, Deserialize)] -#[cfg_attr(feature = "full", derive(Queryable, Identifiable))] +#[cfg_attr(feature = "full", derive(Queryable, Identifiable, TS))] #[cfg_attr(feature = "full", diesel(table_name = local_site))] #[cfg_attr(feature = "full", diesel(belongs_to(crate::source::site::Site)))] +#[cfg_attr(feature = "full", ts(export))] +/// The local site. pub struct LocalSite { pub id: LocalSiteId, pub site_id: SiteId, + /// True if the site is set up. pub site_setup: bool, + /// Whether downvotes are enabled. pub enable_downvotes: bool, + /// Whether NSFW is enabled. pub enable_nsfw: bool, + /// Whether only admins can create communities. pub community_creation_admin_only: bool, + /// Whether emails are required. pub require_email_verification: bool, + /// An optional registration application questionnaire in markdown. pub application_question: Option, + /// Whether the instance is private or public. pub private_instance: bool, + /// The default front-end theme. pub default_theme: String, - pub default_post_listing_type: String, + pub default_post_listing_type: ListingType, + /// An optional legal disclaimer page. pub legal_information: Option, + /// Whether to hide mod names on the modlog. pub hide_modlog_mod_names: bool, + /// Whether new applications email admins. pub application_email_admins: bool, + /// An optional regex to filter words. pub slur_filter_regex: Option, + /// The max actor name length. pub actor_name_max_length: i32, + /// Whether federation is enabled. pub federation_enabled: bool, - pub federation_debug: bool, - pub federation_worker_count: i32, + /// Whether captcha is enabled. pub captcha_enabled: bool, + /// The captcha difficulty. pub captcha_difficulty: String, - pub registration_mode: RegistrationMode, - pub reports_email_admins: bool, pub published: chrono::NaiveDateTime, pub updated: Option, + pub registration_mode: RegistrationMode, + /// Whether to email admins on new reports. + pub reports_email_admins: bool, } #[derive(Clone, TypedBuilder)] @@ -51,23 +76,20 @@ pub struct LocalSiteInsertForm { pub application_question: Option, pub private_instance: Option, pub default_theme: Option, - pub default_post_listing_type: Option, + pub default_post_listing_type: Option, pub legal_information: Option, pub hide_modlog_mod_names: Option, pub application_email_admins: Option, pub slur_filter_regex: Option, pub actor_name_max_length: Option, pub federation_enabled: Option, - pub federation_debug: Option, - pub federation_worker_count: Option, pub captcha_enabled: Option, pub captcha_difficulty: Option, pub registration_mode: Option, pub reports_email_admins: Option, } -#[derive(Clone, TypedBuilder)] -#[builder(field_defaults(default))] +#[derive(Clone, Default)] #[cfg_attr(feature = "full", derive(AsChangeset))] #[cfg_attr(feature = "full", diesel(table_name = local_site))] pub struct LocalSiteUpdateForm { @@ -79,33 +101,16 @@ pub struct LocalSiteUpdateForm { pub application_question: Option>, pub private_instance: Option, pub default_theme: Option, - pub default_post_listing_type: Option, + pub default_post_listing_type: Option, pub legal_information: Option>, pub hide_modlog_mod_names: Option, pub application_email_admins: Option, pub slur_filter_regex: Option>, pub actor_name_max_length: Option, pub federation_enabled: Option, - pub federation_debug: Option, - pub federation_worker_count: Option, pub captcha_enabled: Option, pub captcha_difficulty: Option, pub registration_mode: Option, pub reports_email_admins: Option, pub updated: Option>, } - -#[cfg(feature = "full")] -#[derive(SqlType)] -#[diesel(postgres_type(name = "registration_mode_enum"))] -pub struct RegistrationModeType; - -#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)] -#[cfg_attr(feature = "full", derive(FromSqlRow, AsExpression))] -#[cfg_attr(feature = "full", diesel(sql_type = RegistrationModeType))] -#[serde(rename_all = "lowercase")] -pub enum RegistrationMode { - Closed, - RequireApplication, - Open, -}