From 78eac8b6b75ae05435776f7b1abba0bdee2b7059 Mon Sep 17 00:00:00 2001 From: realaravinth Date: Wed, 11 May 2022 15:26:00 +0530 Subject: [PATCH] feat: migrate email update to use db_* interface --- sqlx-data.json | 107 +++++++++++++++++++++++++++++++----- src/api/v1/account/email.rs | 27 +++------ 2 files changed, 102 insertions(+), 32 deletions(-) diff --git a/sqlx-data.json b/sqlx-data.json index 6ae87ce2..3046604f 100644 --- a/sqlx-data.json +++ b/sqlx-data.json @@ -169,6 +169,41 @@ }, "query": "SELECT time FROM mcaptcha_pow_confirmed_stats \n WHERE \n config_id = (\n SELECT config_id FROM mcaptcha_config \n WHERE \n key = $1\n AND\n user_id = (\n SELECT \n ID FROM mcaptcha_users WHERE name = $2))\n ORDER BY time DESC" }, + "45d9e9fb6344fe3a18c2529d50c935d3837bfe25c96595beb6970d6067720578": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Varchar", + "Text", + "Varchar", + "Varchar" + ] + } + }, + "query": "insert into mcaptcha_users \n (name , password, email, secret) values ($1, $2, $3, $4)" + }, + "47fa50aecfb1499b0a18fa9299643017a1a8d69d4e9980032e0d8f745465d14f": { + "describe": { + "columns": [ + { + "name": "exists", + "ordinal": 0, + "type_info": "Bool" + } + ], + "nullable": [ + null + ], + "parameters": { + "Left": [ + "Text" + ] + } + }, + "query": "SELECT EXISTS (SELECT 1 from mcaptcha_users WHERE email = $1)" + }, "4a5dfbc5aeb2bab290a09640cc25223d484fbc7549e5bc54f33bab8616725031": { "describe": { "columns": [ @@ -229,19 +264,6 @@ }, "query": "UPDATE mcaptcha_config SET key = $1 \n WHERE key = $2 AND user_id = (SELECT ID FROM mcaptcha_users WHERE name = $3)" }, - "51758dd099e4eaafeab3b45cdc08a44eb19d72f2e5b23494cf3978d7fc134402": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Varchar", - "Text" - ] - } - }, - "query": "UPDATE mcaptcha_users set email = $1\n WHERE name = $2" - }, "60081afa71dca3d10b372aabfdbc809f0cf62b33994a3bb43ea444159c6544fe": { "describe": { "columns": [], @@ -352,6 +374,20 @@ }, "query": "DELETE FROM mcaptcha_levels \n WHERE config_id = (\n SELECT config_id FROM mcaptcha_config where key = ($1) \n AND user_id = (\n SELECT ID from mcaptcha_users WHERE name = $2\n )\n )" }, + "81c779ed4bb59f8b94dea730cbda31f7733ef16d509a3ed607388b5ddef74638": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Varchar", + "Text", + "Varchar" + ] + } + }, + "query": "INSERT INTO mcaptcha_users \n (name , password, secret) VALUES ($1, $2, $3)" + }, "84484cb6892db29121816bc5bff5702b9e857e20aa14e79d080d78ae7593153b": { "describe": { "columns": [ @@ -487,6 +523,26 @@ }, "query": "SELECT name FROM mcaptcha_config \n WHERE key = $1 \n AND user_id = (\n SELECT user_id FROM mcaptcha_users WHERE NAME = $2)" }, + "ad23588ee4bcbb13e208460ce21e2fa9f1373893934b530b339fea10360b34a8": { + "describe": { + "columns": [ + { + "name": "exists", + "ordinal": 0, + "type_info": "Bool" + } + ], + "nullable": [ + null + ], + "parameters": { + "Left": [ + "Text" + ] + } + }, + "query": "SELECT EXISTS (SELECT 1 from mcaptcha_users WHERE name = $1)" + }, "ada91fac02c7bba9b13deebccda6f6fc45773b5a6e786c37c27b4a71a5cd29f2": { "describe": { "columns": [ @@ -520,6 +576,19 @@ }, "query": "SELECT config_id, duration, name from mcaptcha_config WHERE\n key = $1 AND\n user_id = (SELECT ID FROM mcaptcha_users WHERE name = $2) " }, + "b97d810814fbeb2df19f47bcfa381bc6fb7ac6832d040b377cf4fca2ca896cfb": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Varchar", + "Text" + ] + } + }, + "query": "UPDATE mcaptcha_users set email = $1\n WHERE name = $2" + }, "bdf2e2781bfa2e9c81c18ef8df7230809d3b20274685a35b1c544804f2a58241": { "describe": { "columns": [ @@ -600,6 +669,18 @@ }, "query": "SELECT time FROM mcaptcha_pow_fetched_stats\n WHERE \n config_id = (\n SELECT \n config_id FROM mcaptcha_config \n WHERE \n key = $1\n AND\n user_id = (\n SELECT \n ID FROM mcaptcha_users WHERE name = $2))\n ORDER BY time DESC" }, + "ca9d5241f1234d1825f7ead391ebe9099fca776e7101ac6e1761881606def5fa": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Text" + ] + } + }, + "query": "DELETE FROM mcaptcha_users WHERE name = ($1)" + }, "d85750d86bbafeaf6f52cec3d49d708bef1a9ef85bbd9c55d63c9c27cb93223c": { "describe": { "columns": [], diff --git a/src/api/v1/account/email.rs b/src/api/v1/account/email.rs index e6fd9592..17d13b9c 100644 --- a/src/api/v1/account/email.rs +++ b/src/api/v1/account/email.rs @@ -18,6 +18,7 @@ use std::borrow::Cow; use actix_identity::Identity; use actix_web::{web, HttpResponse, Responder}; +use db_core::UpdateEmail; use serde::{Deserialize, Serialize}; use super::{AccountCheckPayload, AccountCheckResp}; @@ -55,25 +56,13 @@ async fn set_email( data.creds.email(&payload.email)?; - let res = sqlx::query!( - "UPDATE mcaptcha_users set email = $1 - WHERE name = $2", - &payload.email, - &username, - ) - .execute(&data.db) - .await; - if res.is_err() { - if let Err(sqlx::Error::Database(err)) = res { - if err.code() == Some(Cow::from("23505")) - && err.message().contains("mcaptcha_users_email_key") - { - return Err(ServiceError::EmailTaken); - } else { - return Err(sqlx::Error::Database(err).into()); - } - }; - } + let update_email = UpdateEmail { + username: &username, + new_email: &payload.email, + }; + + data.dblib.update_email(&update_email).await?; + Ok(HttpResponse::Ok()) }