1 use crate::newtypes::{DbUrl, PersonId, PrivateMessageId};
2 use serde::{Deserialize, Serialize};
3 use typed_builder::TypedBuilder;
5 #[cfg(feature = "full")]
6 use crate::schema::private_message;
8 #[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
9 #[cfg_attr(feature = "full", derive(Queryable, Associations, Identifiable))]
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,
22 pub published: chrono::NaiveDateTime,
23 pub updated: Option<chrono::NaiveDateTime>,
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 {
34 pub creator_id: PersonId,
36 pub recipient_id: PersonId,
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>,
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>,