Deploying to gh-pages from @ 3cd38511fa 🚀

This commit is contained in:
realaravinth
2024-02-19 14:58:12 +00:00
parent 120b15c0c7
commit 500a7b89d5
757 changed files with 20470 additions and 19361 deletions

View File

@@ -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) -&gt; 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">&quot;23000&quot;</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">&quot;for key &#39;name&#39;&quot;</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">&quot;for key &#39;email&#39;&quot;</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">&quot;for key &#39;secret&#39;&quot;</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">&quot;for key &#39;captcha_key&#39;&quot;</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)))

View File

@@ -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">&amp;</span><span class="self">self</span>) -&gt; DBResult&lt;()&gt; {
<span class="macro">sqlx::migrate!</span>(<span class="string">&quot;./migrations/&quot;</span>)
<span class="macro">sqlx::migrate!</span>(<span class="string">"./migrations/"</span>)
.run(<span class="kw-2">&amp;</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">&amp;</span><span class="self">self</span>, p: <span class="kw-2">&amp;</span>Register) -&gt; DBResult&lt;()&gt; {
<span class="kw">let </span>res = <span class="kw">if let </span><span class="prelude-val">Some</span>(email) = <span class="kw-2">&amp;</span>p.email {
<span class="macro">sqlx::query!</span>(
<span class="string">&quot;insert into mcaptcha_users
(name , password, email, secret) values (?, ?, ?, ?)&quot;</span>,
<span class="string">"insert into mcaptcha_users
(name , password, email, secret) values (?, ?, ?, ?)"</span>,
<span class="kw-2">&amp;</span>p.username,
<span class="kw-2">&amp;</span>p.hash,
<span class="kw-2">&amp;</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">&quot;INSERT INTO mcaptcha_users
(name , password, secret) VALUES (?, ?, ?)&quot;</span>,
<span class="string">"INSERT INTO mcaptcha_users
(name , password, secret) VALUES (?, ?, ?)"</span>,
<span class="kw-2">&amp;</span>p.username,
<span class="kw-2">&amp;</span>p.hash,
<span class="kw-2">&amp;</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">&amp;</span><span class="self">self</span>, username: <span class="kw-2">&amp;</span>str) -&gt; DBResult&lt;()&gt; {
<span class="macro">sqlx::query!</span>(<span class="string">&quot;DELETE FROM mcaptcha_users WHERE name = (?)&quot;</span>, username)
<span class="macro">sqlx::query!</span>(<span class="string">"DELETE FROM mcaptcha_users WHERE name = (?)"</span>, username)
.execute(<span class="kw-2">&amp;</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">&amp;</span><span class="self">self</span>, username: <span class="kw-2">&amp;</span>str) -&gt; DBResult&lt;bool&gt; {
<span class="kw">match </span><span class="macro">sqlx::query!</span>(<span class="string">&quot;SELECT name from mcaptcha_users WHERE name = ?&quot;</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">&amp;</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">&quot;SELECT email FROM mcaptcha_users WHERE name = ?&quot;</span>,
<span class="string">"SELECT email FROM mcaptcha_users WHERE name = ?"</span>,
username
)
.fetch_one(<span class="kw-2">&amp;</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">&amp;</span><span class="self">self</span>, email: <span class="kw-2">&amp;</span>str) -&gt; DBResult&lt;bool&gt; {
<span class="kw">match </span><span class="macro">sqlx::query!</span>(<span class="string">&quot;SELECT name from mcaptcha_users WHERE email = ?&quot;</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">&amp;</span><span class="self">self</span>.pool)
.<span class="kw">await
</span>{
@@ -1582,11 +1583,11 @@
}
}
<span class="doccomment">/// update a user&#39;s email
<span class="doccomment">/// update a user's email
</span><span class="kw">async fn </span>update_email(<span class="kw-2">&amp;</span><span class="self">self</span>, p: <span class="kw-2">&amp;</span>UpdateEmail) -&gt; DBResult&lt;()&gt; {
<span class="macro">sqlx::query!</span>(
<span class="string">&quot;UPDATE mcaptcha_users set email = ?
WHERE name = ?&quot;</span>,
<span class="string">"UPDATE mcaptcha_users set email = ?
WHERE name = ?"</span>,
<span class="kw-2">&amp;</span>p.new_email,
<span class="kw-2">&amp;</span>p.username,
)
@@ -1597,7 +1598,7 @@
<span class="prelude-val">Ok</span>(())
}
<span class="doccomment">/// get a user&#39;s password
<span class="doccomment">/// get a user's password
</span><span class="kw">async fn </span>get_password(<span class="kw-2">&amp;</span><span class="self">self</span>, l: <span class="kw-2">&amp;</span>Login) -&gt; DBResult&lt;NameHash&gt; {
<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) =&gt; <span class="macro">sqlx::query_as!</span>(
Password,
<span class="string">r#&quot;SELECT name, password FROM mcaptcha_users WHERE name = ?&quot;#</span>,
<span class="string">r#"SELECT name, password FROM mcaptcha_users WHERE name = ?"#</span>,
u,
)
.fetch_one(<span class="kw-2">&amp;</span><span class="self">self</span>.pool)
@@ -1616,7 +1617,7 @@
Login::Email(e) =&gt; <span class="macro">sqlx::query_as!</span>(
Password,
<span class="string">r#&quot;SELECT name, password FROM mcaptcha_users WHERE email = ?&quot;#</span>,
<span class="string">r#"SELECT name, password FROM mcaptcha_users WHERE email = ?"#</span>,
e,
)
.fetch_one(<span class="kw-2">&amp;</span><span class="self">self</span>.pool)
@@ -1632,11 +1633,11 @@
<span class="prelude-val">Ok</span>(res)
}
<span class="doccomment">/// update user&#39;s password
<span class="doccomment">/// update user's password
</span><span class="kw">async fn </span>update_password(<span class="kw-2">&amp;</span><span class="self">self</span>, p: <span class="kw-2">&amp;</span>NameHash) -&gt; DBResult&lt;()&gt; {
<span class="macro">sqlx::query!</span>(
<span class="string">&quot;UPDATE mcaptcha_users set password = ?
WHERE name = ?&quot;</span>,
<span class="string">"UPDATE mcaptcha_users set password = ?
WHERE name = ?"</span>,
<span class="kw-2">&amp;</span>p.hash,
<span class="kw-2">&amp;</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">&amp;</span><span class="self">self</span>, current: <span class="kw-2">&amp;</span>str, new: <span class="kw-2">&amp;</span>str) -&gt; DBResult&lt;()&gt; {
<span class="macro">sqlx::query!</span>(
<span class="string">&quot;UPDATE mcaptcha_users set name = ?
WHERE name = ?&quot;</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&#39;s secret
<span class="doccomment">/// get a user's secret
</span><span class="kw">async fn </span>get_secret(<span class="kw-2">&amp;</span><span class="self">self</span>, username: <span class="kw-2">&amp;</span>str) -&gt; DBResult&lt;Secret&gt; {
<span class="kw">let </span>secret = <span class="macro">sqlx::query_as!</span>(
Secret,
<span class="string">r#&quot;SELECT secret FROM mcaptcha_users WHERE name = ?&quot;#</span>,
<span class="string">r#"SELECT secret FROM mcaptcha_users WHERE name = ?"#</span>,
username,
)
.fetch_one(<span class="kw-2">&amp;</span><span class="self">self</span>.pool)
@@ -1676,13 +1677,13 @@
<span class="prelude-val">Ok</span>(secret)
}
<span class="doccomment">/// get a user&#39;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">&amp;</span><span class="self">self</span>, key: <span class="kw-2">&amp;</span>str) -&gt; DBResult&lt;Secret&gt; {
<span class="kw">let </span>secret = <span class="macro">sqlx::query_as!</span>(
Secret,
<span class="string">r#&quot;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 = ?
)&quot;#</span>,
)"#</span>,
key,
)
.fetch_one(<span class="kw-2">&amp;</span><span class="self">self</span>.pool)
@@ -1692,11 +1693,11 @@
<span class="prelude-val">Ok</span>(secret)
}
<span class="doccomment">/// update a user&#39;s secret
<span class="doccomment">/// update a user's secret
</span><span class="kw">async fn </span>update_secret(<span class="kw-2">&amp;</span><span class="self">self</span>, username: <span class="kw-2">&amp;</span>str, secret: <span class="kw-2">&amp;</span>str) -&gt; DBResult&lt;()&gt; {
<span class="macro">sqlx::query!</span>(
<span class="string">&quot;UPDATE mcaptcha_users set secret = ?
WHERE name = ?&quot;</span>,
<span class="string">"UPDATE mcaptcha_users set secret = ?
WHERE name = ?"</span>,
<span class="kw-2">&amp;</span>secret,
<span class="kw-2">&amp;</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">&amp;</span><span class="self">self</span>, username: <span class="kw-2">&amp;</span>str, p: <span class="kw-2">&amp;</span>CreateCaptcha) -&gt; DBResult&lt;()&gt; {
<span class="macro">sqlx::query!</span>(
<span class="string">&quot;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 = ?), ?, ?)&quot;</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">&amp;</span><span class="self">self</span>, username: <span class="kw-2">&amp;</span>str, key: <span class="kw-2">&amp;</span>str) -&gt; DBResult&lt;Captcha&gt; {
<span class="kw">let </span>captcha = <span class="macro">sqlx::query_as!</span>(
InternaleCaptchaConfig,
<span class="string">&quot;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 = ?) &quot;</span>,
user_id = (SELECT ID FROM mcaptcha_users WHERE name = ?) "</span>,
<span class="kw-2">&amp;</span>key,
<span class="kw-2">&amp;</span>username,
)
@@ -1746,8 +1747,8 @@
</span><span class="kw">async fn </span>get_all_user_captchas(<span class="kw-2">&amp;</span><span class="self">self</span>, username: <span class="kw-2">&amp;</span>str) -&gt; DBResult&lt;Vec&lt;Captcha&gt;&gt; {
<span class="kw">let </span><span class="kw-2">mut </span>res = <span class="macro">sqlx::query_as!</span>(
InternaleCaptchaConfig,
<span class="string">&quot;SELECT captcha_key, name, config_id, duration FROM mcaptcha_config WHERE
user_id = (SELECT ID FROM mcaptcha_users WHERE name = ?) &quot;</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">&amp;</span>username,
)
.fetch_all(<span class="kw-2">&amp;</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&#39;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">&amp;</span><span class="self">self</span>,
username: <span class="kw-2">&amp;</span>str,
p: <span class="kw-2">&amp;</span>CreateCaptcha,
) -&gt; DBResult&lt;()&gt; {
<span class="macro">sqlx::query!</span>(
<span class="string">&quot;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 = ?&quot;</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&#39;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">&amp;</span><span class="self">self</span>,
username: <span class="kw-2">&amp;</span>str,
@@ -1791,8 +1792,8 @@
new_key: <span class="kw-2">&amp;</span>str,
) -&gt; DBResult&lt;()&gt; {
<span class="macro">sqlx::query!</span>(
<span class="string">&quot;UPDATE mcaptcha_config SET captcha_key = ?
WHERE captcha_key = ? AND user_id = (SELECT ID FROM mcaptcha_users WHERE name = ?)&quot;</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">&quot;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 = ?
)));&quot;</span>,
)));"</span>,
difficulty_factor,
visitor_threshold,
<span class="kw-2">&amp;</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">&quot;INSERT INTO
<span class="string">"INSERT INTO
mcaptcha_track_nonce (level_id, nonce)
VALUES ((
SELECT
@@ -1859,7 +1860,7 @@
difficulty_factor = ?
AND
visitor_threshold = ?
), ?);&quot;</span>,
), ?);"</span>,
<span class="kw-2">&amp;</span>captcha_key,
difficulty_factor,
visitor_threshold,
@@ -1892,10 +1893,10 @@
<span class="prelude-val">Some</span>(username) =&gt; {
<span class="macro">sqlx::query_as!</span>(
ConfigId,
<span class="string">&quot;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 = ?)&quot;</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>=&gt; {
<span class="macro">sqlx::query_as!</span>(
ConfigId,
<span class="string">&quot;SELECT config_id from mcaptcha_config WHERE captcha_key = ?&quot;</span>,
<span class="string">"SELECT config_id from mcaptcha_config WHERE captcha_key = ?"</span>,
<span class="kw-2">&amp;</span>captcha_key,
)
.fetch_one(<span class="kw-2">&amp;</span><span class="self">self</span>.pool)
@@ -1932,13 +1933,13 @@
captcha_key: <span class="kw-2">&amp;</span>str,
) -&gt; DBResult&lt;()&gt; {
<span class="macro">sqlx::query!</span>(
<span class="string">&quot;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 = ?
)
)&quot;</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">&amp;</span><span class="self">self</span>, username: <span class="kw-2">&amp;</span>str, captcha_key: <span class="kw-2">&amp;</span>str) -&gt; DBResult&lt;()&gt; {
<span class="macro">sqlx::query!</span>(
<span class="string">&quot;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 = ?)&quot;</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>=&gt; <span class="macro">sqlx::query_as!</span>(
I32Levels,
<span class="string">&quot;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;&quot;</span>,
) ORDER BY difficulty_factor ASC;"</span>,
captcha_key,
)
.fetch_all(<span class="kw-2">&amp;</span><span class="self">self</span>.pool)
@@ -1990,12 +1991,12 @@
<span class="prelude-val">Some</span>(username) =&gt; <span class="macro">sqlx::query_as!</span>(
I32Levels,
<span class="string">&quot;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;&quot;</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&#39;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">&amp;</span><span class="self">self</span>, captcha_key: <span class="kw-2">&amp;</span>str) -&gt; DBResult&lt;i32&gt; {
<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">&quot;SELECT duration FROM mcaptcha_config
where captcha_key= ?&quot;</span>,
<span class="string">"SELECT duration FROM mcaptcha_config
where captcha_key= ?"</span>,
captcha_key,
)
.fetch_one(<span class="kw-2">&amp;</span><span class="self">self</span>.pool)
@@ -2040,7 +2041,7 @@
pattern: <span class="kw-2">&amp;</span>TrafficPattern,
) -&gt; DBResult&lt;()&gt; {
<span class="macro">sqlx::query!</span>(
<span class="string">&quot;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 = ?)
), ?, ?, ?)&quot;</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">&quot;SELECT
<span class="string">"SELECT
avg_traffic,
peak_sustainable_traffic,
broke_my_site_traffic
@@ -2098,7 +2099,7 @@
NAME = ?
)
)
&quot;</span>,
"</span>,
captcha_key,
username
)
@@ -2119,7 +2120,7 @@
captcha_key: <span class="kw-2">&amp;</span>str,
) -&gt; DBResult&lt;()&gt; {
<span class="macro">sqlx::query!</span>(
<span class="string">&quot;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 = ?)
);&quot;</span>,
);"</span>,
captcha_key,
username,
)
@@ -2142,14 +2143,14 @@
</span><span class="kw">async fn </span>create_notification(<span class="kw-2">&amp;</span><span class="self">self</span>, p: <span class="kw-2">&amp;</span>AddNotification) -&gt; DBResult&lt;()&gt; {
<span class="kw">let </span>now = now_unix_time_stamp();
<span class="macro">sqlx::query!</span>(
<span class="string">&quot;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 = ?),
?
);&quot;</span>,
);"</span>,
p.heading,
p.message,
p.from,
@@ -2170,7 +2171,7 @@
) -&gt; DBResult&lt;Vec&lt;Notification&gt;&gt; {
<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">&quot;./src/get_all_unread_notifications.sql&quot;</span>,
<span class="string">"./src/get_all_unread_notifications.sql"</span>,
<span class="kw-2">&amp;</span>username
)
.fetch_all(<span class="kw-2">&amp;</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">&amp;</span><span class="self">self</span>, username: <span class="kw-2">&amp;</span>str, id: i32) -&gt; DBResult&lt;()&gt; {
<span class="macro">sqlx::query_file_as!</span>(
Notification,
<span class="string">&quot;./src/mark_notification_read.sql&quot;</span>,
<span class="string">"./src/mark_notification_read.sql"</span>,
id,
<span class="kw-2">&amp;</span>username
)
@@ -2205,8 +2206,8 @@
</span><span class="kw">async fn </span>record_fetch(<span class="kw-2">&amp;</span><span class="self">self</span>, key: <span class="kw-2">&amp;</span>str) -&gt; DBResult&lt;()&gt; {
<span class="kw">let </span>now = now_unix_time_stamp();
<span class="kw">let _ </span>= <span class="macro">sqlx::query!</span>(
<span class="string">&quot;INSERT INTO mcaptcha_pow_fetched_stats
(config_id, time) VALUES ((SELECT config_id FROM mcaptcha_config where captcha_key= ?), ?)&quot;</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">&amp;</span>now,
)
@@ -2220,8 +2221,8 @@
</span><span class="kw">async fn </span>record_solve(<span class="kw-2">&amp;</span><span class="self">self</span>, key: <span class="kw-2">&amp;</span>str) -&gt; DBResult&lt;()&gt; {
<span class="kw">let </span>now = OffsetDateTime::now_utc();
<span class="kw">let _ </span>= <span class="macro">sqlx::query!</span>(
<span class="string">&quot;INSERT INTO mcaptcha_pow_solved_stats
(config_id, time) VALUES ((SELECT config_id FROM mcaptcha_config where captcha_key= ?), ?)&quot;</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">&amp;</span>now,
)
@@ -2235,8 +2236,8 @@
</span><span class="kw">async fn </span>record_confirm(<span class="kw-2">&amp;</span><span class="self">self</span>, key: <span class="kw-2">&amp;</span>str) -&gt; DBResult&lt;()&gt; {
<span class="kw">let </span>now = now_unix_time_stamp();
<span class="kw">let _ </span>= <span class="macro">sqlx::query!</span>(
<span class="string">&quot;INSERT INTO mcaptcha_pow_confirmed_stats
(config_id, time) VALUES ((SELECT config_id FROM mcaptcha_config where captcha_key= ?), ?)&quot;</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">&amp;</span>now
)
@@ -2250,7 +2251,7 @@
</span><span class="kw">async fn </span>fetch_config_fetched(<span class="kw-2">&amp;</span><span class="self">self</span>, user: <span class="kw-2">&amp;</span>str, key: <span class="kw-2">&amp;</span>str) -&gt; DBResult&lt;Vec&lt;i64&gt;&gt; {
<span class="kw">let </span>records = <span class="macro">sqlx::query_as!</span>(
Date,
<span class="string">&quot;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&quot;</span>,
ORDER BY time DESC"</span>,
<span class="kw-2">&amp;</span>key,
<span class="kw-2">&amp;</span>user,
)
@@ -2276,7 +2277,7 @@
</span><span class="kw">async fn </span>fetch_solve(<span class="kw-2">&amp;</span><span class="self">self</span>, user: <span class="kw-2">&amp;</span>str, key: <span class="kw-2">&amp;</span>str) -&gt; DBResult&lt;Vec&lt;i64&gt;&gt; {
<span class="kw">let </span>records = <span class="macro">sqlx::query_as!</span>(
Date,
<span class="string">&quot;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&quot;</span>,
ORDER BY time DESC"</span>,
<span class="kw-2">&amp;</span>key,
<span class="kw-2">&amp;</span>user
)
@@ -2300,7 +2301,7 @@
</span><span class="kw">async fn </span>fetch_confirm(<span class="kw-2">&amp;</span><span class="self">self</span>, user: <span class="kw-2">&amp;</span>str, key: <span class="kw-2">&amp;</span>str) -&gt; DBResult&lt;Vec&lt;i64&gt;&gt; {
<span class="kw">let </span>records = <span class="macro">sqlx::query_as!</span>(
Date,
<span class="string">&quot;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&quot;</span>,
ORDER BY time DESC"</span>,
<span class="kw-2">&amp;</span>key,
<span class="kw-2">&amp;</span>user
)
@@ -2328,9 +2329,9 @@
d: <span class="kw-2">&amp;</span>CreatePerformanceAnalytics,
) -&gt; DBResult&lt;()&gt; {
<span class="kw">let _ </span>= <span class="macro">sqlx::query!</span>(
<span class="string">&quot;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= ?), ?, ?, ?)&quot;</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">&quot;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 ?&quot;</span>,
LIMIT ? OFFSET ?"</span>,
<span class="kw-2">&amp;</span>captcha_id,
limit <span class="kw">as </span>i64,
offset <span class="kw">as </span>i64,
@@ -2401,13 +2402,13 @@
) -&gt; DBResult&lt;()&gt; {
<span class="kw">let </span>id = Uuid::new_v4();
<span class="macro">sqlx::query!</span>(
<span class="string">&quot;
<span class="string">"
INSERT INTO
mcaptcha_psuedo_campaign_id (config_id, psuedo_id)
VALUES (
(SELECT config_id FROM mcaptcha_config WHERE captcha_key = (?)),
?
);&quot;</span>,
);"</span>,
captcha_id,
<span class="kw-2">&amp;</span>id.to_string(),
)
@@ -2425,11 +2426,11 @@
) -&gt; DBResult&lt;String&gt; {
<span class="kw">let </span>res = <span class="macro">sqlx::query_as!</span>(
PsuedoID,
<span class="string">&quot;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 = (?));
&quot;</span>,
"</span>,
captcha_id
).fetch_one(<span class="kw-2">&amp;</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">&quot;SELECT
<span class="string">"SELECT
captcha_key
FROM
mcaptcha_config
@@ -2461,7 +2462,7 @@
mcaptcha_psuedo_campaign_id
WHERE
psuedo_id = ?
);&quot;</span>,
);"</span>,
psuedo_id
)
.fetch_one(<span class="kw-2">&amp;</span><span class="self">self</span>.pool)
@@ -2475,25 +2476,25 @@
campaign_id: <span class="kw-2">&amp;</span>str,
) -&gt; DBResult&lt;()&gt; {
<span class="kw">let _ </span>= <span class="macro">sqlx::query!</span>(
<span class="string">&quot;
<span class="string">"
DELETE FROM
mcaptcha_psuedo_campaign_id
WHERE config_id = (
SELECT config_id FROM mcaptcha_config WHERE captcha_key = ?
);&quot;</span>,
);"</span>,
campaign_id
)
.execute(<span class="kw-2">&amp;</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">&quot;
<span class="string">"
DELETE FROM
mcaptcha_pow_analytics
WHERE
config_id = (
SELECT config_id FROM mcaptcha_config WHERE captcha_key = ?
) &quot;</span>,
) "</span>,
campaign_id
)
.execute(<span class="kw-2">&amp;</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">&quot;
<span class="string">"
SELECT
psuedo_id
FROM
mcaptcha_psuedo_campaign_id
ORDER BY ID ASC LIMIT ? OFFSET ?;&quot;</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 @@
) -&gt; DBResult&lt;()&gt; {
<span class="kw">let </span>latest_nonce = latest_nonce <span class="kw">as </span>i64;
<span class="macro">sqlx::query!</span>(
<span class="string">&quot;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 &lt;= ?;&quot;</span>,
AND nonce &lt;= ?;"</span>,
latest_nonce,
<span class="kw-2">&amp;</span>captcha_key,
difficulty_factor <span class="kw">as </span>i64,
@@ -2573,7 +2574,7 @@
) -&gt; DBResult&lt;X&gt; {
<span class="macro">sqlx::query_as!</span>(
X,
<span class="string">&quot;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 = ?
);&quot;</span>,
);"</span>,
<span class="kw-2">&amp;</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">&amp;</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">&quot;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 = ?
), ?);&quot;</span>,
), ?);"</span>,
<span class="kw-2">&amp;</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>&lt;i64&gt;,
}
<span class="comment">//&quot;SELECT COUNT(*) FROM (SELECT difficulty_factor FROM mcaptcha_pow_analytics WHERE time &lt;= ?) as count&quot;,
<span class="comment">//"SELECT COUNT(*) FROM (SELECT difficulty_factor FROM mcaptcha_pow_analytics WHERE time &lt;= ?) as count",
</span><span class="kw">let </span>count = <span class="macro">sqlx::query_as!</span>(
Count,
<span class="string">&quot;SELECT
<span class="string">"SELECT
COUNT(difficulty_factor) AS count
FROM
mcaptcha_pow_analytics
WHERE time &lt;= ?;&quot;</span>,
WHERE time &lt;= ?;"</span>,
duration <span class="kw">as </span>i32,
)
.fetch_one(<span class="kw-2">&amp;</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">&quot;SELECT
<span class="string">"SELECT
difficulty_factor
FROM
mcaptcha_pow_analytics
WHERE
time &lt;= ?
ORDER BY difficulty_factor ASC LIMIT 1 OFFSET ?;&quot;</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">&quot;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 ?&quot;</span>,
LIMIT ? OFFSET ?"</span>,
limit <span class="kw">as </span>i64,
offset <span class="kw">as </span>i64
)