X-Git-Url: http://these/git/?a=blobdiff_plain;f=crates%2Fdb_schema%2Fsrc%2Fsource%2Flocal_user.rs;h=d9e1bde756910bbbcbf3599866070651e1583ea4;hb=9b5e765364ecf7de64c9cbc7a452ccfaabce5449;hp=c38a5ac640558e6047532a1d502345dcdd18dace;hpb=985fe24669d3fdeecc0aa76cc74dd6570cbad5c8;p=lemmy.git diff --git a/crates/db_schema/src/source/local_user.rs b/crates/db_schema/src/source/local_user.rs index c38a5ac6..d9e1bde7 100644 --- a/crates/db_schema/src/source/local_user.rs +++ b/crates/db_schema/src/source/local_user.rs @@ -1,32 +1,60 @@ -use crate::newtypes::{LocalUserId, PersonId}; #[cfg(feature = "full")] use crate::schema::local_user; +use crate::{ + newtypes::{LocalUserId, PersonId}, + ListingType, + SortType, +}; 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(Clone, PartialEq, Eq, Debug, 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_user))] +#[cfg_attr(feature = "full", ts(export))] +/// A local user. pub struct LocalUser { pub id: LocalUserId, + /// The person_id for the local user. pub person_id: PersonId, #[serde(skip)] pub password_encrypted: String, pub email: Option, + /// Whether to show NSFW content. pub show_nsfw: bool, pub theme: String, - pub default_sort_type: i16, - pub default_listing_type: i16, + pub default_sort_type: SortType, + pub default_listing_type: ListingType, pub interface_language: String, + /// Whether to show avatars. pub show_avatars: bool, pub send_notifications_to_email: bool, + /// A validation ID used in logging out sessions. pub validator_time: chrono::NaiveDateTime, - pub show_bot_accounts: bool, + /// Whether to show comment / post scores. pub show_scores: bool, + /// Whether to show bot accounts. + pub show_bot_accounts: bool, + /// Whether to show read posts. pub show_read_posts: bool, + /// Whether to show new posts as notifications. pub show_new_post_notifs: bool, + /// Whether their email has been verified. pub email_verified: bool, + /// Whether their registration application has been accepted. pub accepted_application: bool, + #[serde(skip)] + pub totp_2fa_secret: Option, + /// A URL to add their 2-factor auth. + pub totp_2fa_url: Option, + /// Open links in a new tab. + pub open_links_in_new_tab: bool, + /// Whether infinite scroll is enabled. + pub infinite_scroll_enabled: bool, } #[derive(Clone, TypedBuilder)] @@ -41,8 +69,8 @@ pub struct LocalUserInsertForm { pub email: Option, pub show_nsfw: Option, pub theme: Option, - pub default_sort_type: Option, - pub default_listing_type: Option, + pub default_sort_type: Option, + pub default_listing_type: Option, pub interface_language: Option, pub show_avatars: Option, pub send_notifications_to_email: Option, @@ -52,6 +80,10 @@ pub struct LocalUserInsertForm { pub show_new_post_notifs: Option, pub email_verified: Option, pub accepted_application: Option, + pub totp_2fa_secret: Option>, + pub totp_2fa_url: Option>, + pub open_links_in_new_tab: Option, + pub infinite_scroll_enabled: Option, } #[derive(Clone, TypedBuilder)] @@ -63,8 +95,8 @@ pub struct LocalUserUpdateForm { pub email: Option>, pub show_nsfw: Option, pub theme: Option, - pub default_sort_type: Option, - pub default_listing_type: Option, + pub default_sort_type: Option, + pub default_listing_type: Option, pub interface_language: Option, pub show_avatars: Option, pub send_notifications_to_email: Option, @@ -74,4 +106,8 @@ pub struct LocalUserUpdateForm { pub show_new_post_notifs: Option, pub email_verified: Option, pub accepted_application: Option, + pub totp_2fa_secret: Option>, + pub totp_2fa_url: Option>, + pub open_links_in_new_tab: Option, + pub infinite_scroll_enabled: Option, }