mirror of
https://github.com/mCaptcha/mCaptcha.git
synced 2026-02-13 02:55:39 +00:00
Deploying to gh-pages from @ 3cd38511fa 🚀
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `db/db-sqlx-maria/src/errors.rs`."><title>errors.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-9ee3a5e31a2afa3e.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="db_sqlx_maria" data-themes="" data-resource-suffix="" data-rustdoc-version="1.75.0 (82e1608df 2023-12-21)" data-channel="1.75.0" data-search-js="search-8fbf244ebcf71464.js" data-settings-js="settings-74424d7eec62a23e.js" ><script src="../../static.files/storage-fec3eaa3851e447d.js"></script><script defer src="../../static.files/src-script-3280b574d94e47b4.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-9dd44ab47b99a0fb.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-5d8b3c7633ad77ba.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
|
||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `db/db-sqlx-maria/src/errors.rs`."><title>errors.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-ac92e1bbe349e143.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="db_sqlx_maria" data-themes="" data-resource-suffix="" data-rustdoc-version="1.76.0 (07dca489a 2024-02-04)" data-channel="1.76.0" data-search-js="search-2b6ce74ff89ae146.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-f2adc0d6ca4d09fb.js"></script><script defer src="../../static.files/src-script-39ed315d46fb705f.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-305769736d49e732.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-feafe1bb7466e4bd.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><div class="sidebar-resizer"></div>
|
||||
<main><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
|
||||
<a href="#2" id="2">2</a>
|
||||
<a href="#3" id="3">3</a>
|
||||
<a href="#4" id="4">4</a>
|
||||
@@ -64,15 +65,15 @@
|
||||
<span class="doccomment">/// map postgres errors to [DBError](DBError) types
|
||||
</span><span class="kw">pub fn </span>map_register_err(e: Error) -> DBError {
|
||||
<span class="kw">if let </span>Error::Database(err) = e {
|
||||
<span class="kw">if </span>err.code() == <span class="prelude-val">Some</span>(Cow::from(<span class="string">"23000"</span>)) {
|
||||
<span class="kw">if </span>err.code() == <span class="prelude-val">Some</span>(Cow::from(<span class="string">"23000"</span>)) {
|
||||
<span class="kw">let </span>msg = err.message();
|
||||
<span class="kw">if </span>msg.contains(<span class="string">"for key 'name'"</span>) {
|
||||
<span class="kw">if </span>msg.contains(<span class="string">"for key 'name'"</span>) {
|
||||
DBError::UsernameTaken
|
||||
} <span class="kw">else if </span>msg.contains(<span class="string">"for key 'email'"</span>) {
|
||||
} <span class="kw">else if </span>msg.contains(<span class="string">"for key 'email'"</span>) {
|
||||
DBError::EmailTaken
|
||||
} <span class="kw">else if </span>msg.contains(<span class="string">"for key 'secret'"</span>) {
|
||||
} <span class="kw">else if </span>msg.contains(<span class="string">"for key 'secret'"</span>) {
|
||||
DBError::SecretTaken
|
||||
} <span class="kw">else if </span>msg.contains(<span class="string">"for key 'captcha_key'"</span>) {
|
||||
} <span class="kw">else if </span>msg.contains(<span class="string">"for key 'captcha_key'"</span>) {
|
||||
DBError::CaptchaKeyTaken
|
||||
} <span class="kw">else </span>{
|
||||
DBError::DBError(Box::new(Error::Database(err)))
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `db/db-sqlx-maria/src/lib.rs`."><title>lib.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-9ee3a5e31a2afa3e.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="db_sqlx_maria" data-themes="" data-resource-suffix="" data-rustdoc-version="1.75.0 (82e1608df 2023-12-21)" data-channel="1.75.0" data-search-js="search-8fbf244ebcf71464.js" data-settings-js="settings-74424d7eec62a23e.js" ><script src="../../static.files/storage-fec3eaa3851e447d.js"></script><script defer src="../../static.files/src-script-3280b574d94e47b4.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-9dd44ab47b99a0fb.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-5d8b3c7633ad77ba.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
|
||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `db/db-sqlx-maria/src/lib.rs`."><title>lib.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-ac92e1bbe349e143.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="db_sqlx_maria" data-themes="" data-resource-suffix="" data-rustdoc-version="1.76.0 (07dca489a 2024-02-04)" data-channel="1.76.0" data-search-js="search-2b6ce74ff89ae146.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-f2adc0d6ca4d09fb.js"></script><script defer src="../../static.files/src-script-39ed315d46fb705f.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-305769736d49e732.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-feafe1bb7466e4bd.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><div class="sidebar-resizer"></div>
|
||||
<main><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
|
||||
<a href="#2" id="2">2</a>
|
||||
<a href="#3" id="3">3</a>
|
||||
<a href="#4" id="4">4</a>
|
||||
@@ -1483,7 +1484,7 @@
|
||||
<span class="attr">#[async_trait]
|
||||
</span><span class="kw">impl </span>Migrate <span class="kw">for </span>Database {
|
||||
<span class="kw">async fn </span>migrate(<span class="kw-2">&</span><span class="self">self</span>) -> DBResult<()> {
|
||||
<span class="macro">sqlx::migrate!</span>(<span class="string">"./migrations/"</span>)
|
||||
<span class="macro">sqlx::migrate!</span>(<span class="string">"./migrations/"</span>)
|
||||
.run(<span class="kw-2">&</span><span class="self">self</span>.pool)
|
||||
.<span class="kw">await
|
||||
</span>.map_err(|e| DBError::DBError(Box::new(e)))<span class="question-mark">?</span>;
|
||||
@@ -1508,8 +1509,8 @@
|
||||
</span><span class="kw">async fn </span>register(<span class="kw-2">&</span><span class="self">self</span>, p: <span class="kw-2">&</span>Register) -> DBResult<()> {
|
||||
<span class="kw">let </span>res = <span class="kw">if let </span><span class="prelude-val">Some</span>(email) = <span class="kw-2">&</span>p.email {
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"insert into mcaptcha_users
|
||||
(name , password, email, secret) values (?, ?, ?, ?)"</span>,
|
||||
<span class="string">"insert into mcaptcha_users
|
||||
(name , password, email, secret) values (?, ?, ?, ?)"</span>,
|
||||
<span class="kw-2">&</span>p.username,
|
||||
<span class="kw-2">&</span>p.hash,
|
||||
<span class="kw-2">&</span>email,
|
||||
@@ -1519,8 +1520,8 @@
|
||||
.<span class="kw">await
|
||||
</span>} <span class="kw">else </span>{
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"INSERT INTO mcaptcha_users
|
||||
(name , password, secret) VALUES (?, ?, ?)"</span>,
|
||||
<span class="string">"INSERT INTO mcaptcha_users
|
||||
(name , password, secret) VALUES (?, ?, ?)"</span>,
|
||||
<span class="kw-2">&</span>p.username,
|
||||
<span class="kw-2">&</span>p.hash,
|
||||
<span class="kw-2">&</span>p.secret,
|
||||
@@ -1534,7 +1535,7 @@
|
||||
|
||||
<span class="doccomment">/// delete a user
|
||||
</span><span class="kw">async fn </span>delete_user(<span class="kw-2">&</span><span class="self">self</span>, username: <span class="kw-2">&</span>str) -> DBResult<()> {
|
||||
<span class="macro">sqlx::query!</span>(<span class="string">"DELETE FROM mcaptcha_users WHERE name = (?)"</span>, username)
|
||||
<span class="macro">sqlx::query!</span>(<span class="string">"DELETE FROM mcaptcha_users WHERE name = (?)"</span>, username)
|
||||
.execute(<span class="kw-2">&</span><span class="self">self</span>.pool)
|
||||
.<span class="kw">await
|
||||
</span>.map_err(|e| map_row_not_found_err(e, DBError::AccountNotFound))<span class="question-mark">?</span>;
|
||||
@@ -1543,7 +1544,7 @@
|
||||
|
||||
<span class="doccomment">/// check if username exists
|
||||
</span><span class="kw">async fn </span>username_exists(<span class="kw-2">&</span><span class="self">self</span>, username: <span class="kw-2">&</span>str) -> DBResult<bool> {
|
||||
<span class="kw">match </span><span class="macro">sqlx::query!</span>(<span class="string">"SELECT name from mcaptcha_users WHERE name = ?"</span>, username,)
|
||||
<span class="kw">match </span><span class="macro">sqlx::query!</span>(<span class="string">"SELECT name from mcaptcha_users WHERE name = ?"</span>, username,)
|
||||
.fetch_one(<span class="kw-2">&</span><span class="self">self</span>.pool)
|
||||
.<span class="kw">await
|
||||
</span>{
|
||||
@@ -1561,7 +1562,7 @@
|
||||
|
||||
<span class="kw">let </span>res = <span class="macro">sqlx::query_as!</span>(
|
||||
Email,
|
||||
<span class="string">"SELECT email FROM mcaptcha_users WHERE name = ?"</span>,
|
||||
<span class="string">"SELECT email FROM mcaptcha_users WHERE name = ?"</span>,
|
||||
username
|
||||
)
|
||||
.fetch_one(<span class="kw-2">&</span><span class="self">self</span>.pool)
|
||||
@@ -1572,7 +1573,7 @@
|
||||
|
||||
<span class="doccomment">/// check if email exists
|
||||
</span><span class="kw">async fn </span>email_exists(<span class="kw-2">&</span><span class="self">self</span>, email: <span class="kw-2">&</span>str) -> DBResult<bool> {
|
||||
<span class="kw">match </span><span class="macro">sqlx::query!</span>(<span class="string">"SELECT name from mcaptcha_users WHERE email = ?"</span>, email)
|
||||
<span class="kw">match </span><span class="macro">sqlx::query!</span>(<span class="string">"SELECT name from mcaptcha_users WHERE email = ?"</span>, email)
|
||||
.fetch_one(<span class="kw-2">&</span><span class="self">self</span>.pool)
|
||||
.<span class="kw">await
|
||||
</span>{
|
||||
@@ -1582,11 +1583,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
<span class="doccomment">/// update a user's email
|
||||
<span class="doccomment">/// update a user's email
|
||||
</span><span class="kw">async fn </span>update_email(<span class="kw-2">&</span><span class="self">self</span>, p: <span class="kw-2">&</span>UpdateEmail) -> DBResult<()> {
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"UPDATE mcaptcha_users set email = ?
|
||||
WHERE name = ?"</span>,
|
||||
<span class="string">"UPDATE mcaptcha_users set email = ?
|
||||
WHERE name = ?"</span>,
|
||||
<span class="kw-2">&</span>p.new_email,
|
||||
<span class="kw-2">&</span>p.username,
|
||||
)
|
||||
@@ -1597,7 +1598,7 @@
|
||||
<span class="prelude-val">Ok</span>(())
|
||||
}
|
||||
|
||||
<span class="doccomment">/// get a user's password
|
||||
<span class="doccomment">/// get a user's password
|
||||
</span><span class="kw">async fn </span>get_password(<span class="kw-2">&</span><span class="self">self</span>, l: <span class="kw-2">&</span>Login) -> DBResult<NameHash> {
|
||||
<span class="kw">struct </span>Password {
|
||||
name: String,
|
||||
@@ -1607,7 +1608,7 @@
|
||||
<span class="kw">let </span>rec = <span class="kw">match </span>l {
|
||||
Login::Username(u) => <span class="macro">sqlx::query_as!</span>(
|
||||
Password,
|
||||
<span class="string">r#"SELECT name, password FROM mcaptcha_users WHERE name = ?"#</span>,
|
||||
<span class="string">r#"SELECT name, password FROM mcaptcha_users WHERE name = ?"#</span>,
|
||||
u,
|
||||
)
|
||||
.fetch_one(<span class="kw-2">&</span><span class="self">self</span>.pool)
|
||||
@@ -1616,7 +1617,7 @@
|
||||
|
||||
Login::Email(e) => <span class="macro">sqlx::query_as!</span>(
|
||||
Password,
|
||||
<span class="string">r#"SELECT name, password FROM mcaptcha_users WHERE email = ?"#</span>,
|
||||
<span class="string">r#"SELECT name, password FROM mcaptcha_users WHERE email = ?"#</span>,
|
||||
e,
|
||||
)
|
||||
.fetch_one(<span class="kw-2">&</span><span class="self">self</span>.pool)
|
||||
@@ -1632,11 +1633,11 @@
|
||||
<span class="prelude-val">Ok</span>(res)
|
||||
}
|
||||
|
||||
<span class="doccomment">/// update user's password
|
||||
<span class="doccomment">/// update user's password
|
||||
</span><span class="kw">async fn </span>update_password(<span class="kw-2">&</span><span class="self">self</span>, p: <span class="kw-2">&</span>NameHash) -> DBResult<()> {
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"UPDATE mcaptcha_users set password = ?
|
||||
WHERE name = ?"</span>,
|
||||
<span class="string">"UPDATE mcaptcha_users set password = ?
|
||||
WHERE name = ?"</span>,
|
||||
<span class="kw-2">&</span>p.hash,
|
||||
<span class="kw-2">&</span>p.username,
|
||||
)
|
||||
@@ -1650,8 +1651,8 @@
|
||||
<span class="doccomment">/// update username
|
||||
</span><span class="kw">async fn </span>update_username(<span class="kw-2">&</span><span class="self">self</span>, current: <span class="kw-2">&</span>str, new: <span class="kw-2">&</span>str) -> DBResult<()> {
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"UPDATE mcaptcha_users set name = ?
|
||||
WHERE name = ?"</span>,
|
||||
<span class="string">"UPDATE mcaptcha_users set name = ?
|
||||
WHERE name = ?"</span>,
|
||||
new,
|
||||
current,
|
||||
)
|
||||
@@ -1662,11 +1663,11 @@
|
||||
<span class="prelude-val">Ok</span>(())
|
||||
}
|
||||
|
||||
<span class="doccomment">/// get a user's secret
|
||||
<span class="doccomment">/// get a user's secret
|
||||
</span><span class="kw">async fn </span>get_secret(<span class="kw-2">&</span><span class="self">self</span>, username: <span class="kw-2">&</span>str) -> DBResult<Secret> {
|
||||
<span class="kw">let </span>secret = <span class="macro">sqlx::query_as!</span>(
|
||||
Secret,
|
||||
<span class="string">r#"SELECT secret FROM mcaptcha_users WHERE name = ?"#</span>,
|
||||
<span class="string">r#"SELECT secret FROM mcaptcha_users WHERE name = ?"#</span>,
|
||||
username,
|
||||
)
|
||||
.fetch_one(<span class="kw-2">&</span><span class="self">self</span>.pool)
|
||||
@@ -1676,13 +1677,13 @@
|
||||
<span class="prelude-val">Ok</span>(secret)
|
||||
}
|
||||
|
||||
<span class="doccomment">/// get a user's secret from a captcha key
|
||||
<span class="doccomment">/// get a user's secret from a captcha key
|
||||
</span><span class="kw">async fn </span>get_secret_from_captcha(<span class="kw-2">&</span><span class="self">self</span>, key: <span class="kw-2">&</span>str) -> DBResult<Secret> {
|
||||
<span class="kw">let </span>secret = <span class="macro">sqlx::query_as!</span>(
|
||||
Secret,
|
||||
<span class="string">r#"SELECT secret FROM mcaptcha_users WHERE ID = (
|
||||
<span class="string">r#"SELECT secret FROM mcaptcha_users WHERE ID = (
|
||||
SELECT user_id FROM mcaptcha_config WHERE captcha_key = ?
|
||||
)"#</span>,
|
||||
)"#</span>,
|
||||
key,
|
||||
)
|
||||
.fetch_one(<span class="kw-2">&</span><span class="self">self</span>.pool)
|
||||
@@ -1692,11 +1693,11 @@
|
||||
<span class="prelude-val">Ok</span>(secret)
|
||||
}
|
||||
|
||||
<span class="doccomment">/// update a user's secret
|
||||
<span class="doccomment">/// update a user's secret
|
||||
</span><span class="kw">async fn </span>update_secret(<span class="kw-2">&</span><span class="self">self</span>, username: <span class="kw-2">&</span>str, secret: <span class="kw-2">&</span>str) -> DBResult<()> {
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"UPDATE mcaptcha_users set secret = ?
|
||||
WHERE name = ?"</span>,
|
||||
<span class="string">"UPDATE mcaptcha_users set secret = ?
|
||||
WHERE name = ?"</span>,
|
||||
<span class="kw-2">&</span>secret,
|
||||
<span class="kw-2">&</span>username,
|
||||
)
|
||||
@@ -1710,9 +1711,9 @@
|
||||
<span class="doccomment">/// create new captcha
|
||||
</span><span class="kw">async fn </span>create_captcha(<span class="kw-2">&</span><span class="self">self</span>, username: <span class="kw-2">&</span>str, p: <span class="kw-2">&</span>CreateCaptcha) -> DBResult<()> {
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"INSERT INTO mcaptcha_config
|
||||
<span class="string">"INSERT INTO mcaptcha_config
|
||||
(`captcha_key`, `user_id`, `duration`, `name`)
|
||||
VALUES (?, (SELECT ID FROM mcaptcha_users WHERE name = ?), ?, ?)"</span>,
|
||||
VALUES (?, (SELECT ID FROM mcaptcha_users WHERE name = ?), ?, ?)"</span>,
|
||||
p.key,
|
||||
username,
|
||||
p.duration <span class="kw">as </span>i32,
|
||||
@@ -1729,9 +1730,9 @@
|
||||
</span><span class="kw">async fn </span>get_captcha_config(<span class="kw-2">&</span><span class="self">self</span>, username: <span class="kw-2">&</span>str, key: <span class="kw-2">&</span>str) -> DBResult<Captcha> {
|
||||
<span class="kw">let </span>captcha = <span class="macro">sqlx::query_as!</span>(
|
||||
InternaleCaptchaConfig,
|
||||
<span class="string">"SELECT `config_id`, `duration`, `name`, `captcha_key` from mcaptcha_config WHERE
|
||||
<span class="string">"SELECT `config_id`, `duration`, `name`, `captcha_key` from mcaptcha_config WHERE
|
||||
`captcha_key` = ? AND
|
||||
user_id = (SELECT ID FROM mcaptcha_users WHERE name = ?) "</span>,
|
||||
user_id = (SELECT ID FROM mcaptcha_users WHERE name = ?) "</span>,
|
||||
<span class="kw-2">&</span>key,
|
||||
<span class="kw-2">&</span>username,
|
||||
)
|
||||
@@ -1746,8 +1747,8 @@
|
||||
</span><span class="kw">async fn </span>get_all_user_captchas(<span class="kw-2">&</span><span class="self">self</span>, username: <span class="kw-2">&</span>str) -> DBResult<Vec<Captcha>> {
|
||||
<span class="kw">let </span><span class="kw-2">mut </span>res = <span class="macro">sqlx::query_as!</span>(
|
||||
InternaleCaptchaConfig,
|
||||
<span class="string">"SELECT captcha_key, name, config_id, duration FROM mcaptcha_config WHERE
|
||||
user_id = (SELECT ID FROM mcaptcha_users WHERE name = ?) "</span>,
|
||||
<span class="string">"SELECT captcha_key, name, config_id, duration FROM mcaptcha_config WHERE
|
||||
user_id = (SELECT ID FROM mcaptcha_users WHERE name = ?) "</span>,
|
||||
<span class="kw-2">&</span>username,
|
||||
)
|
||||
.fetch_all(<span class="kw-2">&</span><span class="self">self</span>.pool)
|
||||
@@ -1761,16 +1762,16 @@
|
||||
<span class="prelude-val">Ok</span>(captchas)
|
||||
}
|
||||
|
||||
<span class="doccomment">/// update captcha metadata; doesn't change captcha key
|
||||
<span class="doccomment">/// update captcha metadata; doesn't change captcha key
|
||||
</span><span class="kw">async fn </span>update_captcha_metadata(
|
||||
<span class="kw-2">&</span><span class="self">self</span>,
|
||||
username: <span class="kw-2">&</span>str,
|
||||
p: <span class="kw-2">&</span>CreateCaptcha,
|
||||
) -> DBResult<()> {
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"UPDATE mcaptcha_config SET name = ?, duration = ?
|
||||
<span class="string">"UPDATE mcaptcha_config SET name = ?, duration = ?
|
||||
WHERE user_id = (SELECT ID FROM mcaptcha_users WHERE name = ?)
|
||||
AND captcha_key = ?"</span>,
|
||||
AND captcha_key = ?"</span>,
|
||||
p.description,
|
||||
p.duration,
|
||||
username,
|
||||
@@ -1783,7 +1784,7 @@
|
||||
<span class="prelude-val">Ok</span>(())
|
||||
}
|
||||
|
||||
<span class="doccomment">/// update captcha key; doesn't change metadata
|
||||
<span class="doccomment">/// update captcha key; doesn't change metadata
|
||||
</span><span class="kw">async fn </span>update_captcha_key(
|
||||
<span class="kw-2">&</span><span class="self">self</span>,
|
||||
username: <span class="kw-2">&</span>str,
|
||||
@@ -1791,8 +1792,8 @@
|
||||
new_key: <span class="kw-2">&</span>str,
|
||||
) -> DBResult<()> {
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"UPDATE mcaptcha_config SET captcha_key = ?
|
||||
WHERE captcha_key = ? AND user_id = (SELECT ID FROM mcaptcha_users WHERE name = ?)"</span>,
|
||||
<span class="string">"UPDATE mcaptcha_config SET captcha_key = ?
|
||||
WHERE captcha_key = ? AND user_id = (SELECT ID FROM mcaptcha_users WHERE name = ?)"</span>,
|
||||
new_key,
|
||||
old_key,
|
||||
username,
|
||||
@@ -1818,7 +1819,7 @@
|
||||
<span class="kw">let </span>difficulty_factor = level.difficulty_factor <span class="kw">as </span>i32;
|
||||
<span class="kw">let </span>visitor_threshold = level.visitor_threshold <span class="kw">as </span>i32;
|
||||
<span class="kw">let </span>fut = <span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"INSERT INTO mcaptcha_levels (
|
||||
<span class="string">"INSERT INTO mcaptcha_levels (
|
||||
difficulty_factor,
|
||||
visitor_threshold,
|
||||
config_id) VALUES (
|
||||
@@ -1826,7 +1827,7 @@
|
||||
SELECT config_id FROM mcaptcha_config WHERE
|
||||
captcha_key = (?) AND user_id = (
|
||||
SELECT ID FROM mcaptcha_users WHERE name = ?
|
||||
)));"</span>,
|
||||
)));"</span>,
|
||||
difficulty_factor,
|
||||
visitor_threshold,
|
||||
<span class="kw-2">&</span>captcha_key,
|
||||
@@ -1846,7 +1847,7 @@
|
||||
<span class="kw">let </span>difficulty_factor = level.difficulty_factor <span class="kw">as </span>i32;
|
||||
<span class="kw">let </span>visitor_threshold = level.visitor_threshold <span class="kw">as </span>i32;
|
||||
<span class="kw">let </span>fut = <span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"INSERT INTO
|
||||
<span class="string">"INSERT INTO
|
||||
mcaptcha_track_nonce (level_id, nonce)
|
||||
VALUES ((
|
||||
SELECT
|
||||
@@ -1859,7 +1860,7 @@
|
||||
difficulty_factor = ?
|
||||
AND
|
||||
visitor_threshold = ?
|
||||
), ?);"</span>,
|
||||
), ?);"</span>,
|
||||
<span class="kw-2">&</span>captcha_key,
|
||||
difficulty_factor,
|
||||
visitor_threshold,
|
||||
@@ -1892,10 +1893,10 @@
|
||||
<span class="prelude-val">Some</span>(username) => {
|
||||
<span class="macro">sqlx::query_as!</span>(
|
||||
ConfigId,
|
||||
<span class="string">"SELECT config_id FROM mcaptcha_config
|
||||
<span class="string">"SELECT config_id FROM mcaptcha_config
|
||||
WHERE
|
||||
captcha_key = ?
|
||||
AND user_id = (SELECT ID FROM mcaptcha_users WHERE name = ?)"</span>,
|
||||
AND user_id = (SELECT ID FROM mcaptcha_users WHERE name = ?)"</span>,
|
||||
captcha_key,
|
||||
username
|
||||
)
|
||||
@@ -1909,7 +1910,7 @@
|
||||
<span class="prelude-val">None </span>=> {
|
||||
<span class="macro">sqlx::query_as!</span>(
|
||||
ConfigId,
|
||||
<span class="string">"SELECT config_id from mcaptcha_config WHERE captcha_key = ?"</span>,
|
||||
<span class="string">"SELECT config_id from mcaptcha_config WHERE captcha_key = ?"</span>,
|
||||
<span class="kw-2">&</span>captcha_key,
|
||||
)
|
||||
.fetch_one(<span class="kw-2">&</span><span class="self">self</span>.pool)
|
||||
@@ -1932,13 +1933,13 @@
|
||||
captcha_key: <span class="kw-2">&</span>str,
|
||||
) -> DBResult<()> {
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"DELETE FROM mcaptcha_levels
|
||||
<span class="string">"DELETE FROM mcaptcha_levels
|
||||
WHERE config_id = (
|
||||
SELECT config_id FROM mcaptcha_config where captcha_key= (?)
|
||||
AND user_id = (
|
||||
SELECT ID from mcaptcha_users WHERE name = ?
|
||||
)
|
||||
)"</span>,
|
||||
)"</span>,
|
||||
captcha_key,
|
||||
username
|
||||
)
|
||||
@@ -1952,9 +1953,9 @@
|
||||
<span class="doccomment">/// Delete captcha
|
||||
</span><span class="kw">async fn </span>delete_captcha(<span class="kw-2">&</span><span class="self">self</span>, username: <span class="kw-2">&</span>str, captcha_key: <span class="kw-2">&</span>str) -> DBResult<()> {
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"DELETE FROM mcaptcha_config where captcha_key= (?)
|
||||
<span class="string">"DELETE FROM mcaptcha_config where captcha_key= (?)
|
||||
AND
|
||||
user_id = (SELECT ID FROM mcaptcha_users WHERE name = ?)"</span>,
|
||||
user_id = (SELECT ID FROM mcaptcha_users WHERE name = ?)"</span>,
|
||||
captcha_key,
|
||||
username,
|
||||
)
|
||||
@@ -1978,10 +1979,10 @@
|
||||
<span class="kw">let </span>levels = <span class="kw">match </span>username {
|
||||
<span class="prelude-val">None </span>=> <span class="macro">sqlx::query_as!</span>(
|
||||
I32Levels,
|
||||
<span class="string">"SELECT difficulty_factor, visitor_threshold FROM mcaptcha_levels WHERE
|
||||
<span class="string">"SELECT difficulty_factor, visitor_threshold FROM mcaptcha_levels WHERE
|
||||
config_id = (
|
||||
SELECT config_id FROM mcaptcha_config where captcha_key= (?)
|
||||
) ORDER BY difficulty_factor ASC;"</span>,
|
||||
) ORDER BY difficulty_factor ASC;"</span>,
|
||||
captcha_key,
|
||||
)
|
||||
.fetch_all(<span class="kw-2">&</span><span class="self">self</span>.pool)
|
||||
@@ -1990,12 +1991,12 @@
|
||||
|
||||
<span class="prelude-val">Some</span>(username) => <span class="macro">sqlx::query_as!</span>(
|
||||
I32Levels,
|
||||
<span class="string">"SELECT difficulty_factor, visitor_threshold FROM mcaptcha_levels WHERE
|
||||
<span class="string">"SELECT difficulty_factor, visitor_threshold FROM mcaptcha_levels WHERE
|
||||
config_id = (
|
||||
SELECT config_id FROM mcaptcha_config where captcha_key= (?)
|
||||
AND user_id = (SELECT ID from mcaptcha_users WHERE name = ?)
|
||||
)
|
||||
ORDER BY difficulty_factor ASC;"</span>,
|
||||
ORDER BY difficulty_factor ASC;"</span>,
|
||||
captcha_key,
|
||||
username
|
||||
)
|
||||
@@ -2014,7 +2015,7 @@
|
||||
<span class="prelude-val">Ok</span>(new_levels)
|
||||
}
|
||||
|
||||
<span class="doccomment">/// Get captcha's cooldown period
|
||||
<span class="doccomment">/// Get captcha's cooldown period
|
||||
</span><span class="kw">async fn </span>get_captcha_cooldown(<span class="kw-2">&</span><span class="self">self</span>, captcha_key: <span class="kw-2">&</span>str) -> DBResult<i32> {
|
||||
<span class="kw">struct </span>DurationResp {
|
||||
duration: i32,
|
||||
@@ -2022,8 +2023,8 @@
|
||||
|
||||
<span class="kw">let </span>resp = <span class="macro">sqlx::query_as!</span>(
|
||||
DurationResp,
|
||||
<span class="string">"SELECT duration FROM mcaptcha_config
|
||||
where captcha_key= ?"</span>,
|
||||
<span class="string">"SELECT duration FROM mcaptcha_config
|
||||
where captcha_key= ?"</span>,
|
||||
captcha_key,
|
||||
)
|
||||
.fetch_one(<span class="kw-2">&</span><span class="self">self</span>.pool)
|
||||
@@ -2040,7 +2041,7 @@
|
||||
pattern: <span class="kw-2">&</span>TrafficPattern,
|
||||
) -> DBResult<()> {
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"INSERT INTO mcaptcha_sitekey_user_provided_avg_traffic (
|
||||
<span class="string">"INSERT INTO mcaptcha_sitekey_user_provided_avg_traffic (
|
||||
config_id,
|
||||
avg_traffic,
|
||||
peak_sustainable_traffic,
|
||||
@@ -2048,7 +2049,7 @@
|
||||
) VALUES (
|
||||
(SELECT config_id FROM mcaptcha_config where captcha_key= (?)
|
||||
AND user_id = (SELECT ID FROM mcaptcha_users WHERE name = ?)
|
||||
), ?, ?, ?)"</span>,
|
||||
), ?, ?, ?)"</span>,
|
||||
<span class="comment">//payload.avg_traffic,
|
||||
</span>captcha_key,
|
||||
username,
|
||||
@@ -2075,7 +2076,7 @@
|
||||
}
|
||||
<span class="kw">let </span>res = <span class="macro">sqlx::query_as!</span>(
|
||||
Traffic,
|
||||
<span class="string">"SELECT
|
||||
<span class="string">"SELECT
|
||||
avg_traffic,
|
||||
peak_sustainable_traffic,
|
||||
broke_my_site_traffic
|
||||
@@ -2098,7 +2099,7 @@
|
||||
NAME = ?
|
||||
)
|
||||
)
|
||||
"</span>,
|
||||
"</span>,
|
||||
captcha_key,
|
||||
username
|
||||
)
|
||||
@@ -2119,7 +2120,7 @@
|
||||
captcha_key: <span class="kw-2">&</span>str,
|
||||
) -> DBResult<()> {
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"DELETE FROM mcaptcha_sitekey_user_provided_avg_traffic
|
||||
<span class="string">"DELETE FROM mcaptcha_sitekey_user_provided_avg_traffic
|
||||
WHERE config_id = (
|
||||
SELECT config_id
|
||||
FROM
|
||||
@@ -2128,7 +2129,7 @@
|
||||
captcha_key = ?
|
||||
AND
|
||||
user_id = (SELECT ID FROM mcaptcha_users WHERE name = ?)
|
||||
);"</span>,
|
||||
);"</span>,
|
||||
captcha_key,
|
||||
username,
|
||||
)
|
||||
@@ -2142,14 +2143,14 @@
|
||||
</span><span class="kw">async fn </span>create_notification(<span class="kw-2">&</span><span class="self">self</span>, p: <span class="kw-2">&</span>AddNotification) -> DBResult<()> {
|
||||
<span class="kw">let </span>now = now_unix_time_stamp();
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"INSERT INTO mcaptcha_notifications (
|
||||
<span class="string">"INSERT INTO mcaptcha_notifications (
|
||||
heading, message, tx, rx, received)
|
||||
VALUES (
|
||||
?, ?,
|
||||
(SELECT ID FROM mcaptcha_users WHERE name = ?),
|
||||
(SELECT ID FROM mcaptcha_users WHERE name = ?),
|
||||
?
|
||||
);"</span>,
|
||||
);"</span>,
|
||||
p.heading,
|
||||
p.message,
|
||||
p.from,
|
||||
@@ -2170,7 +2171,7 @@
|
||||
) -> DBResult<Vec<Notification>> {
|
||||
<span class="kw">let </span><span class="kw-2">mut </span>inner_notifications = <span class="macro">sqlx::query_file_as!</span>(
|
||||
InnerNotification,
|
||||
<span class="string">"./src/get_all_unread_notifications.sql"</span>,
|
||||
<span class="string">"./src/get_all_unread_notifications.sql"</span>,
|
||||
<span class="kw-2">&</span>username
|
||||
)
|
||||
.fetch_all(<span class="kw-2">&</span><span class="self">self</span>.pool)
|
||||
@@ -2190,7 +2191,7 @@
|
||||
</span><span class="kw">async fn </span>mark_notification_read(<span class="kw-2">&</span><span class="self">self</span>, username: <span class="kw-2">&</span>str, id: i32) -> DBResult<()> {
|
||||
<span class="macro">sqlx::query_file_as!</span>(
|
||||
Notification,
|
||||
<span class="string">"./src/mark_notification_read.sql"</span>,
|
||||
<span class="string">"./src/mark_notification_read.sql"</span>,
|
||||
id,
|
||||
<span class="kw-2">&</span>username
|
||||
)
|
||||
@@ -2205,8 +2206,8 @@
|
||||
</span><span class="kw">async fn </span>record_fetch(<span class="kw-2">&</span><span class="self">self</span>, key: <span class="kw-2">&</span>str) -> DBResult<()> {
|
||||
<span class="kw">let </span>now = now_unix_time_stamp();
|
||||
<span class="kw">let _ </span>= <span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"INSERT INTO mcaptcha_pow_fetched_stats
|
||||
(config_id, time) VALUES ((SELECT config_id FROM mcaptcha_config where captcha_key= ?), ?)"</span>,
|
||||
<span class="string">"INSERT INTO mcaptcha_pow_fetched_stats
|
||||
(config_id, time) VALUES ((SELECT config_id FROM mcaptcha_config where captcha_key= ?), ?)"</span>,
|
||||
key,
|
||||
<span class="kw-2">&</span>now,
|
||||
)
|
||||
@@ -2220,8 +2221,8 @@
|
||||
</span><span class="kw">async fn </span>record_solve(<span class="kw-2">&</span><span class="self">self</span>, key: <span class="kw-2">&</span>str) -> DBResult<()> {
|
||||
<span class="kw">let </span>now = OffsetDateTime::now_utc();
|
||||
<span class="kw">let _ </span>= <span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"INSERT INTO mcaptcha_pow_solved_stats
|
||||
(config_id, time) VALUES ((SELECT config_id FROM mcaptcha_config where captcha_key= ?), ?)"</span>,
|
||||
<span class="string">"INSERT INTO mcaptcha_pow_solved_stats
|
||||
(config_id, time) VALUES ((SELECT config_id FROM mcaptcha_config where captcha_key= ?), ?)"</span>,
|
||||
key,
|
||||
<span class="kw-2">&</span>now,
|
||||
)
|
||||
@@ -2235,8 +2236,8 @@
|
||||
</span><span class="kw">async fn </span>record_confirm(<span class="kw-2">&</span><span class="self">self</span>, key: <span class="kw-2">&</span>str) -> DBResult<()> {
|
||||
<span class="kw">let </span>now = now_unix_time_stamp();
|
||||
<span class="kw">let _ </span>= <span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"INSERT INTO mcaptcha_pow_confirmed_stats
|
||||
(config_id, time) VALUES ((SELECT config_id FROM mcaptcha_config where captcha_key= ?), ?)"</span>,
|
||||
<span class="string">"INSERT INTO mcaptcha_pow_confirmed_stats
|
||||
(config_id, time) VALUES ((SELECT config_id FROM mcaptcha_config where captcha_key= ?), ?)"</span>,
|
||||
key,
|
||||
<span class="kw-2">&</span>now
|
||||
)
|
||||
@@ -2250,7 +2251,7 @@
|
||||
</span><span class="kw">async fn </span>fetch_config_fetched(<span class="kw-2">&</span><span class="self">self</span>, user: <span class="kw-2">&</span>str, key: <span class="kw-2">&</span>str) -> DBResult<Vec<i64>> {
|
||||
<span class="kw">let </span>records = <span class="macro">sqlx::query_as!</span>(
|
||||
Date,
|
||||
<span class="string">"SELECT time FROM mcaptcha_pow_fetched_stats
|
||||
<span class="string">"SELECT time FROM mcaptcha_pow_fetched_stats
|
||||
WHERE
|
||||
config_id = (
|
||||
SELECT
|
||||
@@ -2261,7 +2262,7 @@
|
||||
user_id = (
|
||||
SELECT
|
||||
ID FROM mcaptcha_users WHERE name = ?))
|
||||
ORDER BY time DESC"</span>,
|
||||
ORDER BY time DESC"</span>,
|
||||
<span class="kw-2">&</span>key,
|
||||
<span class="kw-2">&</span>user,
|
||||
)
|
||||
@@ -2276,7 +2277,7 @@
|
||||
</span><span class="kw">async fn </span>fetch_solve(<span class="kw-2">&</span><span class="self">self</span>, user: <span class="kw-2">&</span>str, key: <span class="kw-2">&</span>str) -> DBResult<Vec<i64>> {
|
||||
<span class="kw">let </span>records = <span class="macro">sqlx::query_as!</span>(
|
||||
Date,
|
||||
<span class="string">"SELECT time FROM mcaptcha_pow_solved_stats
|
||||
<span class="string">"SELECT time FROM mcaptcha_pow_solved_stats
|
||||
WHERE config_id = (
|
||||
SELECT config_id FROM mcaptcha_config
|
||||
WHERE
|
||||
@@ -2285,7 +2286,7 @@
|
||||
user_id = (
|
||||
SELECT
|
||||
ID FROM mcaptcha_users WHERE name = ?))
|
||||
ORDER BY time DESC"</span>,
|
||||
ORDER BY time DESC"</span>,
|
||||
<span class="kw-2">&</span>key,
|
||||
<span class="kw-2">&</span>user
|
||||
)
|
||||
@@ -2300,7 +2301,7 @@
|
||||
</span><span class="kw">async fn </span>fetch_confirm(<span class="kw-2">&</span><span class="self">self</span>, user: <span class="kw-2">&</span>str, key: <span class="kw-2">&</span>str) -> DBResult<Vec<i64>> {
|
||||
<span class="kw">let </span>records = <span class="macro">sqlx::query_as!</span>(
|
||||
Date,
|
||||
<span class="string">"SELECT time FROM mcaptcha_pow_confirmed_stats
|
||||
<span class="string">"SELECT time FROM mcaptcha_pow_confirmed_stats
|
||||
WHERE
|
||||
config_id = (
|
||||
SELECT config_id FROM mcaptcha_config
|
||||
@@ -2310,7 +2311,7 @@
|
||||
user_id = (
|
||||
SELECT
|
||||
ID FROM mcaptcha_users WHERE name = ?))
|
||||
ORDER BY time DESC"</span>,
|
||||
ORDER BY time DESC"</span>,
|
||||
<span class="kw-2">&</span>key,
|
||||
<span class="kw-2">&</span>user
|
||||
)
|
||||
@@ -2328,9 +2329,9 @@
|
||||
d: <span class="kw-2">&</span>CreatePerformanceAnalytics,
|
||||
) -> DBResult<()> {
|
||||
<span class="kw">let _ </span>= <span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"INSERT INTO mcaptcha_pow_analytics
|
||||
<span class="string">"INSERT INTO mcaptcha_pow_analytics
|
||||
(config_id, time, difficulty_factor, worker_type)
|
||||
VALUES ((SELECT config_id FROM mcaptcha_config where captcha_key= ?), ?, ?, ?)"</span>,
|
||||
VALUES ((SELECT config_id FROM mcaptcha_config where captcha_key= ?), ?, ?, ?)"</span>,
|
||||
captcha_id,
|
||||
d.time <span class="kw">as </span>i32,
|
||||
d.difficulty_factor <span class="kw">as </span>i32,
|
||||
@@ -2369,7 +2370,7 @@
|
||||
|
||||
<span class="kw">let </span><span class="kw-2">mut </span>c = <span class="macro">sqlx::query_as!</span>(
|
||||
P,
|
||||
<span class="string">"SELECT
|
||||
<span class="string">"SELECT
|
||||
id, time, difficulty_factor, worker_type
|
||||
FROM
|
||||
mcaptcha_pow_analytics
|
||||
@@ -2378,7 +2379,7 @@
|
||||
SELECT config_id FROM mcaptcha_config WHERE captcha_key = ?
|
||||
)
|
||||
ORDER BY ID
|
||||
LIMIT ? OFFSET ?"</span>,
|
||||
LIMIT ? OFFSET ?"</span>,
|
||||
<span class="kw-2">&</span>captcha_id,
|
||||
limit <span class="kw">as </span>i64,
|
||||
offset <span class="kw">as </span>i64,
|
||||
@@ -2401,13 +2402,13 @@
|
||||
) -> DBResult<()> {
|
||||
<span class="kw">let </span>id = Uuid::new_v4();
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"
|
||||
<span class="string">"
|
||||
INSERT INTO
|
||||
mcaptcha_psuedo_campaign_id (config_id, psuedo_id)
|
||||
VALUES (
|
||||
(SELECT config_id FROM mcaptcha_config WHERE captcha_key = (?)),
|
||||
?
|
||||
);"</span>,
|
||||
);"</span>,
|
||||
captcha_id,
|
||||
<span class="kw-2">&</span>id.to_string(),
|
||||
)
|
||||
@@ -2425,11 +2426,11 @@
|
||||
) -> DBResult<String> {
|
||||
<span class="kw">let </span>res = <span class="macro">sqlx::query_as!</span>(
|
||||
PsuedoID,
|
||||
<span class="string">"SELECT psuedo_id FROM
|
||||
<span class="string">"SELECT psuedo_id FROM
|
||||
mcaptcha_psuedo_campaign_id
|
||||
WHERE
|
||||
config_id = (SELECT config_id FROM mcaptcha_config WHERE captcha_key = (?));
|
||||
"</span>,
|
||||
"</span>,
|
||||
captcha_id
|
||||
).fetch_one(<span class="kw-2">&</span><span class="self">self</span>.pool)
|
||||
.<span class="kw">await
|
||||
@@ -2449,7 +2450,7 @@
|
||||
|
||||
<span class="kw">let </span>res = <span class="macro">sqlx::query_as!</span>(
|
||||
ID,
|
||||
<span class="string">"SELECT
|
||||
<span class="string">"SELECT
|
||||
captcha_key
|
||||
FROM
|
||||
mcaptcha_config
|
||||
@@ -2461,7 +2462,7 @@
|
||||
mcaptcha_psuedo_campaign_id
|
||||
WHERE
|
||||
psuedo_id = ?
|
||||
);"</span>,
|
||||
);"</span>,
|
||||
psuedo_id
|
||||
)
|
||||
.fetch_one(<span class="kw-2">&</span><span class="self">self</span>.pool)
|
||||
@@ -2475,25 +2476,25 @@
|
||||
campaign_id: <span class="kw-2">&</span>str,
|
||||
) -> DBResult<()> {
|
||||
<span class="kw">let _ </span>= <span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"
|
||||
<span class="string">"
|
||||
DELETE FROM
|
||||
mcaptcha_psuedo_campaign_id
|
||||
WHERE config_id = (
|
||||
SELECT config_id FROM mcaptcha_config WHERE captcha_key = ?
|
||||
);"</span>,
|
||||
);"</span>,
|
||||
campaign_id
|
||||
)
|
||||
.execute(<span class="kw-2">&</span><span class="self">self</span>.pool)
|
||||
.<span class="kw">await</span>;
|
||||
|
||||
<span class="kw">let _ </span>= <span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"
|
||||
<span class="string">"
|
||||
DELETE FROM
|
||||
mcaptcha_pow_analytics
|
||||
WHERE
|
||||
config_id = (
|
||||
SELECT config_id FROM mcaptcha_config WHERE captcha_key = ?
|
||||
) "</span>,
|
||||
) "</span>,
|
||||
campaign_id
|
||||
)
|
||||
.execute(<span class="kw-2">&</span><span class="self">self</span>.pool)
|
||||
@@ -2508,12 +2509,12 @@
|
||||
|
||||
<span class="kw">let </span><span class="kw-2">mut </span>res = <span class="macro">sqlx::query_as!</span>(
|
||||
PsuedoID,
|
||||
<span class="string">"
|
||||
<span class="string">"
|
||||
SELECT
|
||||
psuedo_id
|
||||
FROM
|
||||
mcaptcha_psuedo_campaign_id
|
||||
ORDER BY ID ASC LIMIT ? OFFSET ?;"</span>,
|
||||
ORDER BY ID ASC LIMIT ? OFFSET ?;"</span>,
|
||||
LIMIT <span class="kw">as </span>i64,
|
||||
offset <span class="kw">as </span>i64
|
||||
)
|
||||
@@ -2533,7 +2534,7 @@
|
||||
) -> DBResult<()> {
|
||||
<span class="kw">let </span>latest_nonce = latest_nonce <span class="kw">as </span>i64;
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"UPDATE mcaptcha_track_nonce SET nonce = ?
|
||||
<span class="string">"UPDATE mcaptcha_track_nonce SET nonce = ?
|
||||
WHERE level_id = (
|
||||
SELECT
|
||||
level_id
|
||||
@@ -2544,7 +2545,7 @@
|
||||
AND
|
||||
difficulty_factor = ?
|
||||
)
|
||||
AND nonce <= ?;"</span>,
|
||||
AND nonce <= ?;"</span>,
|
||||
latest_nonce,
|
||||
<span class="kw-2">&</span>captcha_key,
|
||||
difficulty_factor <span class="kw">as </span>i64,
|
||||
@@ -2573,7 +2574,7 @@
|
||||
) -> DBResult<X> {
|
||||
<span class="macro">sqlx::query_as!</span>(
|
||||
X,
|
||||
<span class="string">"SELECT nonce FROM mcaptcha_track_nonce
|
||||
<span class="string">"SELECT nonce FROM mcaptcha_track_nonce
|
||||
WHERE level_id = (
|
||||
SELECT
|
||||
level_id
|
||||
@@ -2583,7 +2584,7 @@
|
||||
config_id = (SELECT config_id FROM mcaptcha_config WHERE captcha_key = ?)
|
||||
AND
|
||||
difficulty_factor = ?
|
||||
);"</span>,
|
||||
);"</span>,
|
||||
<span class="kw-2">&</span>captcha_key,
|
||||
difficulty_factor <span class="kw">as </span>i32,
|
||||
)
|
||||
@@ -2594,7 +2595,7 @@
|
||||
<span class="kw">let </span>res = inner_get_max_nonce(<span class="kw-2">&</span><span class="self">self</span>.pool, captcha_key, difficulty_factor).<span class="kw">await</span>;
|
||||
<span class="kw">if let </span><span class="prelude-val">Err</span>(DBError::CaptchaNotFound) = res {
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"INSERT INTO
|
||||
<span class="string">"INSERT INTO
|
||||
mcaptcha_track_nonce (level_id, nonce)
|
||||
VALUES ((
|
||||
SELECT
|
||||
@@ -2605,7 +2606,7 @@
|
||||
config_id = (SELECT config_id FROM mcaptcha_config WHERE captcha_key =?)
|
||||
AND
|
||||
difficulty_factor = ?
|
||||
), ?);"</span>,
|
||||
), ?);"</span>,
|
||||
<span class="kw-2">&</span>captcha_key,
|
||||
difficulty_factor <span class="kw">as </span>i32,
|
||||
<span class="number">0</span>,
|
||||
@@ -2629,14 +2630,14 @@
|
||||
count: <span class="prelude-ty">Option</span><i64>,
|
||||
}
|
||||
|
||||
<span class="comment">//"SELECT COUNT(*) FROM (SELECT difficulty_factor FROM mcaptcha_pow_analytics WHERE time <= ?) as count",
|
||||
<span class="comment">//"SELECT COUNT(*) FROM (SELECT difficulty_factor FROM mcaptcha_pow_analytics WHERE time <= ?) as count",
|
||||
</span><span class="kw">let </span>count = <span class="macro">sqlx::query_as!</span>(
|
||||
Count,
|
||||
<span class="string">"SELECT
|
||||
<span class="string">"SELECT
|
||||
COUNT(difficulty_factor) AS count
|
||||
FROM
|
||||
mcaptcha_pow_analytics
|
||||
WHERE time <= ?;"</span>,
|
||||
WHERE time <= ?;"</span>,
|
||||
duration <span class="kw">as </span>i32,
|
||||
)
|
||||
.fetch_one(<span class="kw-2">&</span><span class="self">self</span>.pool)
|
||||
@@ -2659,13 +2660,13 @@
|
||||
|
||||
<span class="kw">match </span><span class="macro">sqlx::query_as!</span>(
|
||||
Difficulty,
|
||||
<span class="string">"SELECT
|
||||
<span class="string">"SELECT
|
||||
difficulty_factor
|
||||
FROM
|
||||
mcaptcha_pow_analytics
|
||||
WHERE
|
||||
time <= ?
|
||||
ORDER BY difficulty_factor ASC LIMIT 1 OFFSET ?;"</span>,
|
||||
ORDER BY difficulty_factor ASC LIMIT 1 OFFSET ?;"</span>,
|
||||
duration <span class="kw">as </span>i32,
|
||||
location <span class="kw">as </span>i64 - <span class="number">1</span>,
|
||||
)
|
||||
@@ -2694,7 +2695,7 @@
|
||||
}
|
||||
<span class="kw">let </span><span class="kw-2">mut </span>inner_res = <span class="macro">sqlx::query_as!</span>(
|
||||
InnerEasyCaptcha,
|
||||
<span class="string">"SELECT
|
||||
<span class="string">"SELECT
|
||||
mcaptcha_sitekey_user_provided_avg_traffic.avg_traffic,
|
||||
mcaptcha_sitekey_user_provided_avg_traffic.peak_sustainable_traffic,
|
||||
mcaptcha_sitekey_user_provided_avg_traffic.broke_my_site_traffic,
|
||||
@@ -2712,7 +2713,7 @@
|
||||
ON
|
||||
mcaptcha_config.user_id = mcaptcha_users.ID
|
||||
ORDER BY mcaptcha_config.config_id
|
||||
LIMIT ? OFFSET ?"</span>,
|
||||
LIMIT ? OFFSET ?"</span>,
|
||||
limit <span class="kw">as </span>i64,
|
||||
offset <span class="kw">as </span>i64
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user