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