]> Untitled Git - lemmy.git/blob - crates/db_schema/src/source/person.rs
Creating default DB forms. Fixes #1511
[lemmy.git] / crates / db_schema / src / source / person.rs
1 use crate::{
2   schema::{person, person_alias_1, person_alias_2},
3   DbUrl,
4   PersonId,
5 };
6 use serde::Serialize;
7
8 #[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)]
9 #[table_name = "person"]
10 pub struct Person {
11   pub id: PersonId,
12   pub name: String,
13   pub preferred_username: Option<String>,
14   pub avatar: Option<DbUrl>,
15   pub banned: bool,
16   pub published: chrono::NaiveDateTime,
17   pub updated: Option<chrono::NaiveDateTime>,
18   pub actor_id: DbUrl,
19   pub bio: Option<String>,
20   pub local: bool,
21   pub private_key: Option<String>,
22   pub public_key: Option<String>,
23   pub last_refreshed_at: chrono::NaiveDateTime,
24   pub banner: Option<DbUrl>,
25   pub deleted: bool,
26   pub inbox_url: DbUrl,
27   pub shared_inbox_url: Option<DbUrl>,
28   pub matrix_user_id: Option<String>,
29 }
30
31 /// A safe representation of person, without the sensitive info
32 #[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)]
33 #[table_name = "person"]
34 pub struct PersonSafe {
35   pub id: PersonId,
36   pub name: String,
37   pub preferred_username: Option<String>,
38   pub avatar: Option<DbUrl>,
39   pub banned: bool,
40   pub published: chrono::NaiveDateTime,
41   pub updated: Option<chrono::NaiveDateTime>,
42   pub actor_id: DbUrl,
43   pub bio: Option<String>,
44   pub local: bool,
45   pub banner: Option<DbUrl>,
46   pub deleted: bool,
47   pub inbox_url: DbUrl,
48   pub shared_inbox_url: Option<DbUrl>,
49   pub matrix_user_id: Option<String>,
50 }
51
52 #[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)]
53 #[table_name = "person_alias_1"]
54 pub struct PersonAlias1 {
55   pub id: PersonId,
56   pub name: String,
57   pub preferred_username: Option<String>,
58   pub avatar: Option<DbUrl>,
59   pub banned: bool,
60   pub published: chrono::NaiveDateTime,
61   pub updated: Option<chrono::NaiveDateTime>,
62   pub actor_id: DbUrl,
63   pub bio: Option<String>,
64   pub local: bool,
65   pub private_key: Option<String>,
66   pub public_key: Option<String>,
67   pub last_refreshed_at: chrono::NaiveDateTime,
68   pub banner: Option<DbUrl>,
69   pub deleted: bool,
70   pub inbox_url: DbUrl,
71   pub shared_inbox_url: Option<DbUrl>,
72   pub matrix_user_id: Option<String>,
73 }
74
75 #[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)]
76 #[table_name = "person_alias_1"]
77 pub struct PersonSafeAlias1 {
78   pub id: PersonId,
79   pub name: String,
80   pub preferred_username: Option<String>,
81   pub avatar: Option<DbUrl>,
82   pub banned: bool,
83   pub published: chrono::NaiveDateTime,
84   pub updated: Option<chrono::NaiveDateTime>,
85   pub actor_id: DbUrl,
86   pub bio: Option<String>,
87   pub local: bool,
88   pub banner: Option<DbUrl>,
89   pub deleted: bool,
90   pub inbox_url: DbUrl,
91   pub shared_inbox_url: Option<DbUrl>,
92   pub matrix_user_id: Option<String>,
93 }
94
95 #[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)]
96 #[table_name = "person_alias_2"]
97 pub struct PersonAlias2 {
98   pub id: PersonId,
99   pub name: String,
100   pub preferred_username: Option<String>,
101   pub avatar: Option<DbUrl>,
102   pub banned: bool,
103   pub published: chrono::NaiveDateTime,
104   pub updated: Option<chrono::NaiveDateTime>,
105   pub actor_id: DbUrl,
106   pub bio: Option<String>,
107   pub local: bool,
108   pub private_key: Option<String>,
109   pub public_key: Option<String>,
110   pub last_refreshed_at: chrono::NaiveDateTime,
111   pub banner: Option<DbUrl>,
112   pub deleted: bool,
113   pub inbox_url: DbUrl,
114   pub shared_inbox_url: Option<DbUrl>,
115   pub matrix_user_id: Option<String>,
116 }
117
118 #[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)]
119 #[table_name = "person_alias_1"]
120 pub struct PersonSafeAlias2 {
121   pub id: PersonId,
122   pub name: String,
123   pub preferred_username: Option<String>,
124   pub avatar: Option<DbUrl>,
125   pub banned: bool,
126   pub published: chrono::NaiveDateTime,
127   pub updated: Option<chrono::NaiveDateTime>,
128   pub actor_id: DbUrl,
129   pub bio: Option<String>,
130   pub local: bool,
131   pub banner: Option<DbUrl>,
132   pub deleted: bool,
133   pub inbox_url: DbUrl,
134   pub shared_inbox_url: Option<DbUrl>,
135   pub matrix_user_id: Option<String>,
136 }
137
138 #[derive(Insertable, AsChangeset, Clone, Default)]
139 #[table_name = "person"]
140 pub struct PersonForm {
141   pub name: String,
142   pub preferred_username: Option<Option<String>>,
143   pub avatar: Option<Option<DbUrl>>,
144   pub banned: Option<bool>,
145   pub published: Option<chrono::NaiveDateTime>,
146   pub updated: Option<chrono::NaiveDateTime>,
147   pub actor_id: Option<DbUrl>,
148   pub bio: Option<Option<String>>,
149   pub local: Option<bool>,
150   pub private_key: Option<Option<String>>,
151   pub public_key: Option<Option<String>>,
152   pub last_refreshed_at: Option<chrono::NaiveDateTime>,
153   pub banner: Option<Option<DbUrl>>,
154   pub deleted: Option<bool>,
155   pub inbox_url: Option<DbUrl>,
156   pub shared_inbox_url: Option<Option<DbUrl>>,
157   pub matrix_user_id: Option<Option<String>>,
158 }