mirror of
https://github.com/mCaptcha/mCaptcha.git
synced 2025-03-30 15:08:29 +00:00
feat: fetch username of owner and description in easy captcha method
This commit is contained in:
parent
3b8051159d
commit
c70a30e640
@ -397,6 +397,10 @@ pub struct EasyCaptcha {
|
|||||||
pub traffic_pattern: TrafficPattern,
|
pub traffic_pattern: TrafficPattern,
|
||||||
/// captcha key/sitekey
|
/// captcha key/sitekey
|
||||||
pub key: String,
|
pub key: String,
|
||||||
|
/// captcha description
|
||||||
|
pub description: String,
|
||||||
|
/// Owner of the captcha configuration
|
||||||
|
pub username: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Default, PartialEq, Serialize, Deserialize, Clone, Debug)]
|
#[derive(Default, PartialEq, Serialize, Deserialize, Clone, Debug)]
|
||||||
|
@ -1,58 +0,0 @@
|
|||||||
{
|
|
||||||
"db_name": "MySQL",
|
|
||||||
"query": "SELECT \n mcaptcha_sitekey_user_provided_avg_traffic.avg_traffic, \n mcaptcha_sitekey_user_provided_avg_traffic.peak_sustainable_traffic, \n mcaptcha_sitekey_user_provided_avg_traffic.broke_my_site_traffic,\n mcaptcha_config.captcha_key\n FROM \n mcaptcha_sitekey_user_provided_avg_traffic \n INNER JOIN\n mcaptcha_config\n ON\n mcaptcha_config.config_id = mcaptcha_sitekey_user_provided_avg_traffic.config_id\n ORDER BY mcaptcha_config.config_id\n LIMIT ? OFFSET ?",
|
|
||||||
"describe": {
|
|
||||||
"columns": [
|
|
||||||
{
|
|
||||||
"ordinal": 0,
|
|
||||||
"name": "avg_traffic",
|
|
||||||
"type_info": {
|
|
||||||
"type": "Long",
|
|
||||||
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
|
|
||||||
"char_set": 63,
|
|
||||||
"max_size": 11
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ordinal": 1,
|
|
||||||
"name": "peak_sustainable_traffic",
|
|
||||||
"type_info": {
|
|
||||||
"type": "Long",
|
|
||||||
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
|
|
||||||
"char_set": 63,
|
|
||||||
"max_size": 11
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ordinal": 2,
|
|
||||||
"name": "broke_my_site_traffic",
|
|
||||||
"type_info": {
|
|
||||||
"type": "Long",
|
|
||||||
"flags": "",
|
|
||||||
"char_set": 63,
|
|
||||||
"max_size": 11
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ordinal": 3,
|
|
||||||
"name": "captcha_key",
|
|
||||||
"type_info": {
|
|
||||||
"type": "VarString",
|
|
||||||
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
|
|
||||||
"char_set": 224,
|
|
||||||
"max_size": 400
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"parameters": {
|
|
||||||
"Right": 2
|
|
||||||
},
|
|
||||||
"nullable": [
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
true,
|
|
||||||
false
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"hash": "c4aeba65b8bcd0f62ef79ed6549b4960d92dadfaf88401d7e2faacb93a2be169"
|
|
||||||
}
|
|
80
db/db-sqlx-maria/.sqlx/query-d587844217f202c23d29c3cb4c819551bc204dd459c956c41024fa74aadbba64.json
generated
Normal file
80
db/db-sqlx-maria/.sqlx/query-d587844217f202c23d29c3cb4c819551bc204dd459c956c41024fa74aadbba64.json
generated
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
{
|
||||||
|
"db_name": "MySQL",
|
||||||
|
"query": "SELECT \n mcaptcha_sitekey_user_provided_avg_traffic.avg_traffic, \n mcaptcha_sitekey_user_provided_avg_traffic.peak_sustainable_traffic, \n mcaptcha_sitekey_user_provided_avg_traffic.broke_my_site_traffic,\n mcaptcha_config.name,\n mcaptcha_users.name as username,\n mcaptcha_config.captcha_key\n FROM \n mcaptcha_sitekey_user_provided_avg_traffic \n INNER JOIN\n mcaptcha_config\n ON\n mcaptcha_config.config_id = mcaptcha_sitekey_user_provided_avg_traffic.config_id\n INNER JOIN\n mcaptcha_users\n ON\n mcaptcha_config.user_id = mcaptcha_users.ID\n ORDER BY mcaptcha_config.config_id\n LIMIT ? OFFSET ?",
|
||||||
|
"describe": {
|
||||||
|
"columns": [
|
||||||
|
{
|
||||||
|
"ordinal": 0,
|
||||||
|
"name": "avg_traffic",
|
||||||
|
"type_info": {
|
||||||
|
"type": "Long",
|
||||||
|
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
|
||||||
|
"char_set": 63,
|
||||||
|
"max_size": 11
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ordinal": 1,
|
||||||
|
"name": "peak_sustainable_traffic",
|
||||||
|
"type_info": {
|
||||||
|
"type": "Long",
|
||||||
|
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
|
||||||
|
"char_set": 63,
|
||||||
|
"max_size": 11
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ordinal": 2,
|
||||||
|
"name": "broke_my_site_traffic",
|
||||||
|
"type_info": {
|
||||||
|
"type": "Long",
|
||||||
|
"flags": "",
|
||||||
|
"char_set": 63,
|
||||||
|
"max_size": 11
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ordinal": 3,
|
||||||
|
"name": "name",
|
||||||
|
"type_info": {
|
||||||
|
"type": "VarString",
|
||||||
|
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
|
||||||
|
"char_set": 224,
|
||||||
|
"max_size": 400
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ordinal": 4,
|
||||||
|
"name": "username",
|
||||||
|
"type_info": {
|
||||||
|
"type": "VarString",
|
||||||
|
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
|
||||||
|
"char_set": 224,
|
||||||
|
"max_size": 400
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ordinal": 5,
|
||||||
|
"name": "captcha_key",
|
||||||
|
"type_info": {
|
||||||
|
"type": "VarString",
|
||||||
|
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
|
||||||
|
"char_set": 224,
|
||||||
|
"max_size": 400
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"parameters": {
|
||||||
|
"Right": 2
|
||||||
|
},
|
||||||
|
"nullable": [
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"hash": "d587844217f202c23d29c3cb4c819551bc204dd459c956c41024fa74aadbba64"
|
||||||
|
}
|
@ -1274,16 +1274,16 @@ impl MCDatabase for Database {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// Get all easy captcha configurations on instance
|
/// Get all easy captcha configurations on instance
|
||||||
async fn get_all_easy_captchas(
|
async fn get_all_easy_captchas(
|
||||||
&self,
|
&self,
|
||||||
limit: usize,
|
limit: usize,
|
||||||
offset: usize,
|
offset: usize,
|
||||||
) -> DBResult<Vec<EasyCaptcha>> {
|
) -> DBResult<Vec<EasyCaptcha>> {
|
||||||
|
|
||||||
struct InnerEasyCaptcha {
|
struct InnerEasyCaptcha {
|
||||||
captcha_key: String,
|
captcha_key: String,
|
||||||
|
name: String,
|
||||||
|
username: String,
|
||||||
peak_sustainable_traffic: i32,
|
peak_sustainable_traffic: i32,
|
||||||
avg_traffic: i32,
|
avg_traffic: i32,
|
||||||
broke_my_site_traffic: Option<i32>,
|
broke_my_site_traffic: Option<i32>,
|
||||||
@ -1294,6 +1294,8 @@ impl MCDatabase for Database {
|
|||||||
mcaptcha_sitekey_user_provided_avg_traffic.avg_traffic,
|
mcaptcha_sitekey_user_provided_avg_traffic.avg_traffic,
|
||||||
mcaptcha_sitekey_user_provided_avg_traffic.peak_sustainable_traffic,
|
mcaptcha_sitekey_user_provided_avg_traffic.peak_sustainable_traffic,
|
||||||
mcaptcha_sitekey_user_provided_avg_traffic.broke_my_site_traffic,
|
mcaptcha_sitekey_user_provided_avg_traffic.broke_my_site_traffic,
|
||||||
|
mcaptcha_config.name,
|
||||||
|
mcaptcha_users.name as username,
|
||||||
mcaptcha_config.captcha_key
|
mcaptcha_config.captcha_key
|
||||||
FROM
|
FROM
|
||||||
mcaptcha_sitekey_user_provided_avg_traffic
|
mcaptcha_sitekey_user_provided_avg_traffic
|
||||||
@ -1301,6 +1303,10 @@ impl MCDatabase for Database {
|
|||||||
mcaptcha_config
|
mcaptcha_config
|
||||||
ON
|
ON
|
||||||
mcaptcha_config.config_id = mcaptcha_sitekey_user_provided_avg_traffic.config_id
|
mcaptcha_config.config_id = mcaptcha_sitekey_user_provided_avg_traffic.config_id
|
||||||
|
INNER JOIN
|
||||||
|
mcaptcha_users
|
||||||
|
ON
|
||||||
|
mcaptcha_config.user_id = mcaptcha_users.ID
|
||||||
ORDER BY mcaptcha_config.config_id
|
ORDER BY mcaptcha_config.config_id
|
||||||
LIMIT ? OFFSET ?",
|
LIMIT ? OFFSET ?",
|
||||||
limit as i64,
|
limit as i64,
|
||||||
@ -1310,15 +1316,21 @@ impl MCDatabase for Database {
|
|||||||
.await
|
.await
|
||||||
.map_err(|e| map_row_not_found_err(e, DBError::TrafficPatternNotFound))?;
|
.map_err(|e| map_row_not_found_err(e, DBError::TrafficPatternNotFound))?;
|
||||||
let mut res = Vec::with_capacity(inner_res.len());
|
let mut res = Vec::with_capacity(inner_res.len());
|
||||||
inner_res.drain(0..).for_each(|v|
|
inner_res.drain(0..).for_each(|v| {
|
||||||
res.push(EasyCaptcha {
|
res.push(EasyCaptcha {
|
||||||
key: v.captcha_key,
|
key: v.captcha_key,
|
||||||
|
description: v.name,
|
||||||
|
username: v.username,
|
||||||
traffic_pattern: TrafficPattern {
|
traffic_pattern: TrafficPattern {
|
||||||
broke_my_site_traffic: v.broke_my_site_traffic.as_ref().map(|v| *v as u32),
|
broke_my_site_traffic: v
|
||||||
|
.broke_my_site_traffic
|
||||||
|
.as_ref()
|
||||||
|
.map(|v| *v as u32),
|
||||||
avg_traffic: v.avg_traffic as u32,
|
avg_traffic: v.avg_traffic as u32,
|
||||||
peak_sustainable_traffic: v.peak_sustainable_traffic as u32,
|
peak_sustainable_traffic: v.peak_sustainable_traffic as u32,
|
||||||
}
|
},
|
||||||
}));
|
})
|
||||||
|
});
|
||||||
Ok(res)
|
Ok(res)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,41 +0,0 @@
|
|||||||
{
|
|
||||||
"db_name": "PostgreSQL",
|
|
||||||
"query": "SELECT \n mcaptcha_sitekey_user_provided_avg_traffic.avg_traffic, \n mcaptcha_sitekey_user_provided_avg_traffic.peak_sustainable_traffic, \n mcaptcha_sitekey_user_provided_avg_traffic.broke_my_site_traffic,\n mcaptcha_config.key\n FROM \n mcaptcha_sitekey_user_provided_avg_traffic \n INNER JOIN\n mcaptcha_config\n ON\n mcaptcha_config.config_id = mcaptcha_sitekey_user_provided_avg_traffic.config_id\n ORDER BY mcaptcha_config.config_id\n OFFSET $1 LIMIT $2; ",
|
|
||||||
"describe": {
|
|
||||||
"columns": [
|
|
||||||
{
|
|
||||||
"ordinal": 0,
|
|
||||||
"name": "avg_traffic",
|
|
||||||
"type_info": "Int4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ordinal": 1,
|
|
||||||
"name": "peak_sustainable_traffic",
|
|
||||||
"type_info": "Int4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ordinal": 2,
|
|
||||||
"name": "broke_my_site_traffic",
|
|
||||||
"type_info": "Int4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ordinal": 3,
|
|
||||||
"name": "key",
|
|
||||||
"type_info": "Varchar"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"parameters": {
|
|
||||||
"Left": [
|
|
||||||
"Int8",
|
|
||||||
"Int8"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"nullable": [
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
true,
|
|
||||||
false
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"hash": "258b3eab56916d2fa89b86ea39a525fcf804db932629ba38ccb64440494267f2"
|
|
||||||
}
|
|
@ -0,0 +1,53 @@
|
|||||||
|
{
|
||||||
|
"db_name": "PostgreSQL",
|
||||||
|
"query": "SELECT \n mcaptcha_sitekey_user_provided_avg_traffic.avg_traffic, \n mcaptcha_sitekey_user_provided_avg_traffic.peak_sustainable_traffic, \n mcaptcha_sitekey_user_provided_avg_traffic.broke_my_site_traffic,\n mcaptcha_config.name,\n mcaptcha_users.name as username,\n mcaptcha_config.key\n FROM \n mcaptcha_sitekey_user_provided_avg_traffic \n INNER JOIN\n mcaptcha_config\n ON\n mcaptcha_config.config_id = mcaptcha_sitekey_user_provided_avg_traffic.config_id\n INNER JOIN\n mcaptcha_users\n ON\n mcaptcha_config.user_id = mcaptcha_users.ID\n ORDER BY mcaptcha_config.config_id\n OFFSET $1 LIMIT $2; ",
|
||||||
|
"describe": {
|
||||||
|
"columns": [
|
||||||
|
{
|
||||||
|
"ordinal": 0,
|
||||||
|
"name": "avg_traffic",
|
||||||
|
"type_info": "Int4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ordinal": 1,
|
||||||
|
"name": "peak_sustainable_traffic",
|
||||||
|
"type_info": "Int4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ordinal": 2,
|
||||||
|
"name": "broke_my_site_traffic",
|
||||||
|
"type_info": "Int4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ordinal": 3,
|
||||||
|
"name": "name",
|
||||||
|
"type_info": "Varchar"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ordinal": 4,
|
||||||
|
"name": "username",
|
||||||
|
"type_info": "Varchar"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ordinal": 5,
|
||||||
|
"name": "key",
|
||||||
|
"type_info": "Varchar"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"parameters": {
|
||||||
|
"Left": [
|
||||||
|
"Int8",
|
||||||
|
"Int8"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"nullable": [
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"hash": "f01a9c09c8722bc195f477a8c3ce6466d415e7c74665fa882eff4a8566e70577"
|
||||||
|
}
|
@ -710,12 +710,13 @@ impl MCDatabase for Database {
|
|||||||
limit: usize,
|
limit: usize,
|
||||||
offset: usize,
|
offset: usize,
|
||||||
) -> DBResult<Vec<EasyCaptcha>> {
|
) -> DBResult<Vec<EasyCaptcha>> {
|
||||||
|
|
||||||
struct InnerEasyCaptcha {
|
struct InnerEasyCaptcha {
|
||||||
key: String,
|
key: String,
|
||||||
peak_sustainable_traffic: i32,
|
peak_sustainable_traffic: i32,
|
||||||
avg_traffic: i32,
|
avg_traffic: i32,
|
||||||
broke_my_site_traffic: Option<i32>,
|
broke_my_site_traffic: Option<i32>,
|
||||||
|
name: String,
|
||||||
|
username: String,
|
||||||
}
|
}
|
||||||
let mut inner_res = sqlx::query_as!(
|
let mut inner_res = sqlx::query_as!(
|
||||||
InnerEasyCaptcha,
|
InnerEasyCaptcha,
|
||||||
@ -723,6 +724,8 @@ impl MCDatabase for Database {
|
|||||||
mcaptcha_sitekey_user_provided_avg_traffic.avg_traffic,
|
mcaptcha_sitekey_user_provided_avg_traffic.avg_traffic,
|
||||||
mcaptcha_sitekey_user_provided_avg_traffic.peak_sustainable_traffic,
|
mcaptcha_sitekey_user_provided_avg_traffic.peak_sustainable_traffic,
|
||||||
mcaptcha_sitekey_user_provided_avg_traffic.broke_my_site_traffic,
|
mcaptcha_sitekey_user_provided_avg_traffic.broke_my_site_traffic,
|
||||||
|
mcaptcha_config.name,
|
||||||
|
mcaptcha_users.name as username,
|
||||||
mcaptcha_config.key
|
mcaptcha_config.key
|
||||||
FROM
|
FROM
|
||||||
mcaptcha_sitekey_user_provided_avg_traffic
|
mcaptcha_sitekey_user_provided_avg_traffic
|
||||||
@ -730,6 +733,10 @@ impl MCDatabase for Database {
|
|||||||
mcaptcha_config
|
mcaptcha_config
|
||||||
ON
|
ON
|
||||||
mcaptcha_config.config_id = mcaptcha_sitekey_user_provided_avg_traffic.config_id
|
mcaptcha_config.config_id = mcaptcha_sitekey_user_provided_avg_traffic.config_id
|
||||||
|
INNER JOIN
|
||||||
|
mcaptcha_users
|
||||||
|
ON
|
||||||
|
mcaptcha_config.user_id = mcaptcha_users.ID
|
||||||
ORDER BY mcaptcha_config.config_id
|
ORDER BY mcaptcha_config.config_id
|
||||||
OFFSET $1 LIMIT $2; ",
|
OFFSET $1 LIMIT $2; ",
|
||||||
offset as i32,
|
offset as i32,
|
||||||
@ -739,15 +746,21 @@ impl MCDatabase for Database {
|
|||||||
.await
|
.await
|
||||||
.map_err(|e| map_row_not_found_err(e, DBError::TrafficPatternNotFound))?;
|
.map_err(|e| map_row_not_found_err(e, DBError::TrafficPatternNotFound))?;
|
||||||
let mut res = Vec::with_capacity(inner_res.len());
|
let mut res = Vec::with_capacity(inner_res.len());
|
||||||
inner_res.drain(0..).for_each(|v|
|
inner_res.drain(0..).for_each(|v| {
|
||||||
res.push(EasyCaptcha {
|
res.push(EasyCaptcha {
|
||||||
key: v.key,
|
key: v.key,
|
||||||
|
description: v.name,
|
||||||
|
username: v.username,
|
||||||
traffic_pattern: TrafficPattern {
|
traffic_pattern: TrafficPattern {
|
||||||
broke_my_site_traffic: v.broke_my_site_traffic.as_ref().map(|v| *v as u32),
|
broke_my_site_traffic: v
|
||||||
|
.broke_my_site_traffic
|
||||||
|
.as_ref()
|
||||||
|
.map(|v| *v as u32),
|
||||||
avg_traffic: v.avg_traffic as u32,
|
avg_traffic: v.avg_traffic as u32,
|
||||||
peak_sustainable_traffic: v.peak_sustainable_traffic as u32,
|
peak_sustainable_traffic: v.peak_sustainable_traffic as u32,
|
||||||
}
|
},
|
||||||
}));
|
})
|
||||||
|
});
|
||||||
Ok(res)
|
Ok(res)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user