]> Untitled Git - lemmy.git/blob - crates/db_schema/src/source/private_message.rs
Replace TypedBuilder with Default in update forms (#3814)
[lemmy.git] / crates / db_schema / src / source / private_message.rs
1 use crate::newtypes::{DbUrl, PersonId, PrivateMessageId};
2 #[cfg(feature = "full")]
3 use crate::schema::private_message;
4 use serde::{Deserialize, Serialize};
5 use serde_with::skip_serializing_none;
6 #[cfg(feature = "full")]
7 use ts_rs::TS;
8 use typed_builder::TypedBuilder;
9
10 #[skip_serializing_none]
11 #[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
12 #[cfg_attr(feature = "full", derive(Queryable, Associations, Identifiable, TS))]
13 #[cfg_attr(
14   feature = "full",
15   diesel(belongs_to(crate::source::person::Person, foreign_key = creator_id)
16 ))] // Is this the right assoc?
17 #[cfg_attr(feature = "full", diesel(table_name = private_message))]
18 #[cfg_attr(feature = "full", ts(export))]
19 /// A private message.
20 pub struct PrivateMessage {
21   pub id: PrivateMessageId,
22   pub creator_id: PersonId,
23   pub recipient_id: PersonId,
24   pub content: String,
25   pub deleted: bool,
26   pub read: bool,
27   pub published: chrono::NaiveDateTime,
28   pub updated: Option<chrono::NaiveDateTime>,
29   pub ap_id: DbUrl,
30   pub local: bool,
31 }
32
33 #[derive(Clone, TypedBuilder)]
34 #[builder(field_defaults(default))]
35 #[cfg_attr(feature = "full", derive(Insertable, AsChangeset))]
36 #[cfg_attr(feature = "full", diesel(table_name = private_message))]
37 pub struct PrivateMessageInsertForm {
38   #[builder(!default)]
39   pub creator_id: PersonId,
40   #[builder(!default)]
41   pub recipient_id: PersonId,
42   #[builder(!default)]
43   pub content: String,
44   pub deleted: Option<bool>,
45   pub read: Option<bool>,
46   pub published: Option<chrono::NaiveDateTime>,
47   pub updated: Option<chrono::NaiveDateTime>,
48   pub ap_id: Option<DbUrl>,
49   pub local: Option<bool>,
50 }
51
52 #[derive(Clone, Default)]
53 #[cfg_attr(feature = "full", derive(AsChangeset))]
54 #[cfg_attr(feature = "full", diesel(table_name = private_message))]
55 pub struct PrivateMessageUpdateForm {
56   pub content: Option<String>,
57   pub deleted: Option<bool>,
58   pub read: Option<bool>,
59   pub published: Option<chrono::NaiveDateTime>,
60   pub updated: Option<Option<chrono::NaiveDateTime>>,
61   pub ap_id: Option<DbUrl>,
62   pub local: Option<bool>,
63 }