better formatted error messages
also reworked error messages so they create Strings and dont use `&'static str`'s anymore
This commit is contained in:
parent
5e48fa1ab9
commit
b673fc6ca1
@ -7,7 +7,14 @@ use crate::UBigInt;
|
|||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! no_conn {
|
macro_rules! no_conn {
|
||||||
($spec:literal) => {
|
($spec:literal) => {
|
||||||
format!("No connection could be established: {}", $spec)
|
format!("[ CON Error ] : {}", $spec)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! sql_err {
|
||||||
|
($spec:literal) => {
|
||||||
|
format!("[ SQL Error ] : {}", $spec)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ pub enum Response<T> {
|
|||||||
// Duplicate keys can sometimes fuck us over for inserts/update(why tf tho)
|
// Duplicate keys can sometimes fuck us over for inserts/update(why tf tho)
|
||||||
Duplicate,
|
Duplicate,
|
||||||
// Not sure what this will be used for but maybe its useful at some point
|
// Not sure what this will be used for but maybe its useful at some point
|
||||||
Other(&'static str)
|
Other(String)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,10 +4,10 @@ use mysql_async::error::Error as SqlError;
|
|||||||
|
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
|
|
||||||
use crate::Response;
|
use crate::{Response, no_conn, sql_err};
|
||||||
use crate::{UBigInt, BigInt, Integer, VarChar};
|
use crate::{UBigInt, BigInt, Integer, VarChar};
|
||||||
|
|
||||||
use crate::common::{FromDB, NO_CONN_MSG};
|
use crate::common::{FromDB};
|
||||||
|
|
||||||
#[allow(dead_code)] // only because some fields are read by the user
|
#[allow(dead_code)] // only because some fields are read by the user
|
||||||
pub struct Member {
|
pub struct Member {
|
||||||
@ -36,7 +36,7 @@ impl FromDB<Member> for Member {
|
|||||||
let db_res : Result<(Conn, Self::Row), SqlError>
|
let db_res : Result<(Conn, Self::Row), SqlError>
|
||||||
= conn.first_exec(q, params!{"id" => id}).await;
|
= conn.first_exec(q, params!{"id" => id}).await;
|
||||||
if let Ok((_, row)) = db_res {
|
if let Ok((_, row)) = db_res {
|
||||||
match row {
|
return match row {
|
||||||
Some(row) => Response::Row(Self {
|
Some(row) => Response::Row(Self {
|
||||||
id: id,
|
id: id,
|
||||||
secret: row.0,
|
secret: row.0,
|
||||||
@ -48,19 +48,21 @@ impl FromDB<Member> for Member {
|
|||||||
None => Response::Empty
|
None => Response::Empty
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
return Response::Other(sql_err!("Fetch failed"));
|
||||||
return Response::Other("Query failed in Trait Member::get");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return Response::Other(NO_CONN_MSG);
|
|
||||||
}
|
}
|
||||||
|
return Response::Other(no_conn!("Member::FromDB::get"));
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn update(p: &Pool, row: Member) -> Response<Self> {
|
async fn update(p: &Pool, row: Member) -> Response<Self> {
|
||||||
let q = r#"UPDATE members
|
let q = r#"UPDATE members
|
||||||
SET status = :status, permissions = :perms, name = :name
|
SET status = :status, permissions = :perms, name = :name
|
||||||
WHERE id = :id"#;
|
WHERE id = :id"#;
|
||||||
|
// TODO: remoev this retarded extra network hit
|
||||||
|
// technically this is really nice for the user but ultimately it either works or it
|
||||||
|
// doesn't so like the fucks the point of doing some bs like this
|
||||||
|
// the next a client queries this they'll get whatever data is in the db
|
||||||
|
// likewise clients are going likely going to re-get this data since its been updated
|
||||||
|
// or at least should
|
||||||
if let Ok(conn) = p.get_conn().await {
|
if let Ok(conn) = p.get_conn().await {
|
||||||
match Member::get(p, row.id).await {
|
match Member::get(p, row.id).await {
|
||||||
Response::Row(_) => {
|
Response::Row(_) => {
|
||||||
@ -74,15 +76,15 @@ impl FromDB<Member> for Member {
|
|||||||
}).await;
|
}).await;
|
||||||
match db_result {
|
match db_result {
|
||||||
Ok(_) => return Response::Success,
|
Ok(_) => return Response::Success,
|
||||||
Err(_) => return Response::Other("Could not update yet entry was found")
|
Err(_) => return Response::Other(sql_err!("WARN member found | Member::FromDB::update failed - "))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Response::Empty => return Response::Empty,
|
Response::Empty => return Response::Empty,
|
||||||
Response::Other(msg) => return Response::Other(msg),
|
Response::Other(msg) => return Response::Other(msg),
|
||||||
_ => return Response::Other("Magical failure")
|
_ => return Response::Other(sql_err!("Member::FromD::update Bro i dont even"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Response::Other(NO_CONN_MSG);
|
return Response::Other(no_conn!("Member::FromDB::update"));
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn delete(p: &Pool, id: UBigInt) -> Response<Self> {
|
async fn delete(p: &Pool, id: UBigInt) -> Response<Self> {
|
||||||
@ -95,13 +97,13 @@ impl FromDB<Member> for Member {
|
|||||||
if let Ok(conn) = db_result {
|
if let Ok(conn) = db_result {
|
||||||
return match conn.prep_exec("", params!{"id" => id}).await {
|
return match conn.prep_exec("", params!{"id" => id}).await {
|
||||||
Ok(_) => Response::Success,
|
Ok(_) => Response::Success,
|
||||||
Err(_) => Response::Other("Could not delete entry")
|
Err(_) => Response::Other(sql_err!("Member::FromDB::delete"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Response::Success
|
return Response::Success
|
||||||
},
|
},
|
||||||
Response::Empty => return Response::Empty,
|
Response::Empty => return Response::Empty,
|
||||||
_ => return Response::Other("Query failed in Member::delete")
|
_ => return Response::Other(sql_err!("Member::FromDB::delete | another stupid get happened delid this"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user