algohub_server/models/
account.rs1use serde::{Deserialize, Serialize};
2use surrealdb::sql::Thing;
3
4#[derive(Default, Serialize, Deserialize)]
5pub struct Account {
6 pub id: Option<Thing>,
7 pub username: String,
8 pub password: String,
9 pub email: String,
10 pub avatar: Option<String>,
11 pub signature: Option<String>,
12 pub links: Option<Vec<String>>,
13
14 pub nickname: Option<String>,
15 pub sex: Option<bool>,
16 pub birthday: Option<chrono::NaiveDateTime>,
17
18 pub name: Option<String>,
19 pub student_id: Option<String>,
20 pub school: Option<String>,
21 pub college: Option<String>,
22 pub major: Option<String>,
23
24 pub rating: i32,
25 pub active: bool,
26
27 pub created_at: chrono::NaiveDateTime,
28 pub updated_at: chrono::NaiveDateTime,
29}
30
31#[derive(Serialize, Deserialize)]
32#[serde(crate = "rocket::serde")]
33pub struct Register {
34 pub username: String,
35 pub email: String,
36 pub password: String,
37}
38
39#[derive(Deserialize)]
40pub struct Login<'r> {
41 pub identity: &'r str,
42 pub password: &'r str,
43}
44
45#[derive(Serialize, Deserialize, Clone, Debug)]
46#[serde(crate = "rocket::serde")]
47pub struct Profile {
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub username: Option<String>,
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub email: Option<String>,
52
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub avatar: Option<String>,
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub signature: Option<String>,
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub links: Option<Vec<String>>,
59
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub nickname: Option<String>,
62 #[serde(skip_serializing_if = "Option::is_none")]
63 pub sex: Option<bool>,
64 #[serde(skip_serializing_if = "Option::is_none")]
65 pub birthday: Option<chrono::NaiveDateTime>,
66
67 #[serde(skip_serializing_if = "Option::is_none")]
68 pub name: Option<String>,
69 #[serde(skip_serializing_if = "Option::is_none")]
70 pub student_id: Option<String>,
71 #[serde(skip_serializing_if = "Option::is_none")]
72 pub school: Option<String>,
73 #[serde(skip_serializing_if = "Option::is_none")]
74 pub college: Option<String>,
75 #[serde(skip_serializing_if = "Option::is_none")]
76 pub major: Option<String>,
77
78 #[serde(skip_serializing_if = "Option::is_none")]
79 pub rating: Option<i8>,
80 #[serde(skip_serializing_if = "Option::is_none")]
81 pub active: Option<bool>,
82}
83
84#[derive(Debug, Clone, Serialize, Deserialize)]
85pub struct Session {
86 pub id: Option<Thing>,
87 pub account_id: Thing,
88 pub token: String,
89}
90
91#[derive(Serialize, Deserialize, Clone, Debug)]
92#[serde(crate = "rocket::serde")]
93pub struct MergeProfile<'r> {
94 pub id: &'r str,
95 pub token: &'r str,
96 pub profile: Profile,
97}