From 0bb975a230510348e6bd07cbd2910dfcdf58e566 Mon Sep 17 00:00:00 2001 From: realaravinth Date: Thu, 12 May 2022 19:31:47 +0530 Subject: [PATCH] feat: implement captcha exists interface for sqlx postgres --- db/db-sqlx-postgres/src/lib.rs | 43 ++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/db/db-sqlx-postgres/src/lib.rs b/db/db-sqlx-postgres/src/lib.rs index 4843b46e..6103b66b 100644 --- a/db/db-sqlx-postgres/src/lib.rs +++ b/db/db-sqlx-postgres/src/lib.rs @@ -331,6 +331,49 @@ impl MCDatabase for Database { try_join_all(futs).await.map_err(map_register_err)?; Ok(()) } + + /// check if captcha exists + async fn captcha_exists( + &self, + username: Option<&str>, + captcha_key: &str, + ) -> DBResult { + let mut exists = false; + + match username { + Some(username) => { + let x = sqlx::query!( + "SELECT EXISTS ( + SELECT 1 from mcaptcha_config WHERE key = $1 + AND user_id = (SELECT ID FROM mcaptcha_users WHERE name = $2) + )", + captcha_key, + username + ) + .fetch_one(&self.pool) + .await + .map_err(map_register_err)?; + if let Some(x) = x.exists { + exists = x; + }; + } + + None => { + let x = sqlx::query!( + "SELECT EXISTS (SELECT 1 from mcaptcha_config WHERE key = $1)", + &captcha_key, + ) + .fetch_one(&self.pool) + .await + .map_err(map_register_err)?; + if let Some(x) = x.exists { + exists = x; + }; + } + }; + + Ok(exists) + } } fn now_unix_time_stamp() -> i64 {