feat: implement captcha exists interface for sqlx postgres

This commit is contained in:
realaravinth 2022-05-12 19:31:47 +05:30
parent 55518ef650
commit 0bb975a230
No known key found for this signature in database
GPG key ID: AD9F0F08E855ED88

View file

@ -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<bool> {
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 {