refactor(user): remove preferences types (inlined)
zhenyi committed
Deleted lib/user/features/preferences/types.rs lib/user/features/preferences/types.rs +0 −94
@@ -1,94 +0,0 @@
1use db::user::users as user_entity;
2use serde::{Deserialize, Serialize};
3use time::OffsetDateTime;
4use time::format_description::well_known::Rfc3339;
5use utoipa::ToSchema;
6
7#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, ToSchema)]
8#[serde(rename_all = "snake_case")]
9pub enum Audience {
10 Everyone,
11 FollowingOnly,
12 Nobody,
13}
14
15impl From<user_entity::Audience> for Audience {
16 fn from(v: user_entity::Audience) -> Self {
17 match v {
18 user_entity::Audience::Everyone => Audience::Everyone,
19 user_entity::Audience::FollowingOnly => Audience::FollowingOnly,
20 user_entity::Audience::Nobody => Audience::Nobody,
21 }
22 }
23}
24
25impl From<Audience> for user_entity::Audience {
26 fn from(v: Audience) -> Self {
27 match v {
28 Audience::Everyone => user_entity::Audience::Everyone,
29 Audience::FollowingOnly => user_entity::Audience::FollowingOnly,
30 Audience::Nobody => user_entity::Audience::Nobody,
31 }
32 }
33}
34
35fn fmt_ts(ts: OffsetDateTime) -> String {
36 ts.format(&Rfc3339).unwrap_or_default()
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
40pub struct UserPreferences {
41 pub user_id: uuid::Uuid,
42 pub theme_mode: String,
43 pub theme_token: Option<String>,
44 pub theme_version: Option<i64>,
45 pub diff_view_style: Option<String>,
46 pub in_app_flags: i32,
47 pub email_flags: i32,
48 pub push_flags: i32,
49 pub email_digest: bool,
50 pub mute_until: Option<String>,
51 pub allow_dms_from: Audience,
52 pub allow_mentions_from: Audience,
53 pub show_online_status: bool,
54 pub created_at: String,
55 pub updated_at: String,
56}
57
58impl From<db::user::user_preferences::Model> for UserPreferences {
59 fn from(m: db::user::user_preferences::Model) -> Self {
60 Self {
61 user_id: m.user_id,
62 theme_mode: m.theme_mode,
63 theme_token: m.theme_token,
64 theme_version: m.theme_version,
65 diff_view_style: m.diff_view_style,
66 in_app_flags: m.in_app_flags,
67 email_flags: m.email_flags,
68 push_flags: m.push_flags,
69 email_digest: m.email_digest,
70 mute_until: m.mute_until.map(fmt_ts),
71 allow_dms_from: m.allow_dms_from.into(),
72 allow_mentions_from: m.allow_mentions_from.into(),
73 show_online_status: m.show_online_status,
74 created_at: fmt_ts(m.created_at),
75 updated_at: fmt_ts(m.updated_at),
76 }
77 }
78}
79
80#[derive(Debug, Clone, Serialize, Deserialize, ToSchema, Default)]
81pub struct UpdatePreferencesCmd {
82 pub theme_mode: Option<String>,
83 pub theme_token: Option<Option<String>>,
84 pub theme_version: Option<Option<i64>>,
85 pub diff_view_style: Option<Option<String>>,
86 pub in_app_flags: Option<i32>,
87 pub email_flags: Option<i32>,
88 pub push_flags: Option<i32>,
89 pub email_digest: Option<bool>,
90 pub mute_until: Option<Option<String>>,
91 pub allow_dms_from: Option<Audience>,
92 pub allow_mentions_from: Option<Audience>,
93 pub show_online_status: Option<bool>,
94}
No newline at end of file