diff options
| author | Santo Cariotti <santo@dcariotti.me> | 2022-09-13 13:23:57 +0000 |
|---|---|---|
| committer | Santo Cariotti <santo@dcariotti.me> | 2022-09-13 13:23:57 +0000 |
| commit | bcff6540a98056c4b1f90e0efd784eb2b41f347f (patch) | |
| tree | 1c851ee3679e8c5fb958866619dac943079009b1 /src/models | |
| parent | 412494edf618b8eda71656855656f9b8b21c3eae (diff) | |
Add avatar field
Diffstat (limited to 'src/models')
| -rw-r--r-- | src/models/user.rs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/models/user.rs b/src/models/user.rs index 56ae307..b1427f6 100644 --- a/src/models/user.rs +++ b/src/models/user.rs @@ -3,6 +3,7 @@ use crate::db::get_client; use crate::errors::AppError; use serde::{Deserialize, Serialize}; +use serde_with::{serde_as, NoneAsEmptyString}; use validator::Validate; /// User model @@ -16,9 +17,11 @@ pub struct User { #[validate(length(min = 8, message = "Must be min 8 chars length"))] password: String, is_staff: Option<bool>, + avatar: Option<String>, } /// Response used to print a user (or a users list) +#[serde_as] #[derive(Deserialize, Serialize)] pub struct UserList { // It is public because it used by `Claims` creation @@ -26,6 +29,8 @@ pub struct UserList { email: String, username: String, is_staff: Option<bool>, + #[serde_as(as = "NoneAsEmptyString")] + avatar: Option<String>, } impl User { @@ -37,6 +42,7 @@ impl User { username, password, is_staff: Some(false), + avatar: None, } } @@ -54,7 +60,7 @@ impl User { r#" INSERT INTO users (email, username, password) VALUES ( $1, $2, $3) - RETURNING id, email, username, is_staff + RETURNING id, email, username, is_staff, avatar "#, user.email, user.username, @@ -75,7 +81,7 @@ impl User { let rec = sqlx::query_as!( UserList, r#" - SELECT id, email, username, is_staff FROM "users" + SELECT id, email, username, is_staff, avatar FROM "users" WHERE username = $1 AND password = $2 "#, user.username, @@ -94,7 +100,7 @@ impl User { let rec = sqlx::query_as!( UserList, r#" - SELECT id, email, username, is_staff FROM "users" + SELECT id, email, username, is_staff, avatar FROM "users" WHERE id = $1 "#, user_id @@ -110,7 +116,7 @@ impl User { let pool = unsafe { get_client() }; let rows = sqlx::query_as!( UserList, - r#"SELECT id, email, username, is_staff FROM users + r#"SELECT id, email, username, is_staff, avatar FROM users LIMIT $1 OFFSET $2 "#, CONFIG.page_limit, |
