feat: define interface for adding captcha

This commit is contained in:
realaravinth 2022-05-12 19:09:25 +05:30
parent 0d3d552ae0
commit 277d2bb9e5
No known key found for this signature in database
GPG key ID: AD9F0F08E855ED88
2 changed files with 11 additions and 1 deletions

View file

@ -33,7 +33,7 @@
//! connection from pool
use serde::{Deserialize, Serialize};
use libmcaptcha::defense::Level;
pub use libmcaptcha::defense::Level;
pub mod errors;
pub mod ops;
@ -136,6 +136,14 @@ pub trait MCDatabase: std::marker::Send + std::marker::Sync + CloneSPDatabase {
/// create new captcha
async fn create_captcha(&self, username: &str, p: &CreateCaptcha) -> DBResult<()>;
/// Add levels to captcha
async fn add_captcha_levels(
&self,
username: &str,
captcha_key: &str,
levels: &[Level],
) -> DBResult<()>;
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]

View file

@ -22,6 +22,7 @@ pub async fn database_works<'a, T: MCDatabase>(
db: &T,
p: &Register<'a>,
c: &CreateCaptcha<'a>,
l: &[Level],
) {
assert!(db.ping().await, "ping test");
if db.username_exists(p.username).await.unwrap() {
@ -131,4 +132,5 @@ pub async fn database_works<'a, T: MCDatabase>(
);
db.create_captcha(&p.username, c).await.unwrap();
db.add_captcha_levels(p.username, c.key, l).await.unwrap();
}