summaryrefslogtreecommitdiff
path: root/server/src/models/user.rs
diff options
context:
space:
mode:
authorSanto Cariotti <santo@dcariotti.me>2022-10-18 21:14:16 +0200
committerSanto Cariotti <santo@dcariotti.me>2022-10-18 21:14:16 +0200
commit434423454db3a7244c0f1e422f1ab2df06f7d867 (patch)
treeb1f98748e6aef4ff8f0c35845fcdb874297ebd27 /server/src/models/user.rs
parent9a06462a04c268e7493bd490608f3dd4b2d01c00 (diff)
Add signup
Diffstat (limited to 'server/src/models/user.rs')
-rw-r--r--server/src/models/user.rs18
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)
+ }
}