diff options
author | Santo Cariotti <santo@dcariotti.me> | 2022-10-18 21:14:16 +0200 |
---|---|---|
committer | Santo Cariotti <santo@dcariotti.me> | 2022-10-18 21:14:16 +0200 |
commit | 434423454db3a7244c0f1e422f1ab2df06f7d867 (patch) | |
tree | b1f98748e6aef4ff8f0c35845fcdb874297ebd27 /server/src/models/user.rs | |
parent | 9a06462a04c268e7493bd490608f3dd4b2d01c00 (diff) |
Add signup
Diffstat (limited to 'server/src/models/user.rs')
-rw-r--r-- | server/src/models/user.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/server/src/models/user.rs b/server/src/models/user.rs index 06cde0a..b94e114 100644 --- a/server/src/models/user.rs +++ b/server/src/models/user.rs @@ -3,6 +3,7 @@ use crate::errors::AppError; use serde::{Deserialize, Serialize}; use validator::Validate; +use sqlx::Row; /// User model #[derive(Deserialize, Serialize, Validate)] @@ -115,4 +116,21 @@ impl User { Ok(rows) } + + /// Prevent the "uniquess" Postgres fields check. Check if email has been taken + pub async fn email_has_taken(email: &String) -> Result<bool, AppError> { + let pool = unsafe { get_client() }; + let cursor = sqlx::query( + r#" + SELECT COUNT(id) as count FROM users WHERE email = $1 + "#, + ) + .bind(email) + .fetch_one(pool) + .await?; + + let count: i64 = cursor.try_get(0).unwrap(); + + Ok(count > 0) + } } |