diff --git a/server-api/db/src/common.rs b/server-api/db/src/common.rs index 41f8c30..dc6a620 100644 --- a/server-api/db/src/common.rs +++ b/server-api/db/src/common.rs @@ -22,4 +22,6 @@ pub trait FromDB { async fn get(p: &Pool, id: UBigInt) -> Response; async fn update(p: &Pool, row: T) -> Response; + + async fn delete(p: &Pool, id: UBigInt) -> Response; } diff --git a/server-api/db/src/member.rs b/server-api/db/src/member.rs index 8468e50..7b12537 100644 --- a/server-api/db/src/member.rs +++ b/server-api/db/src/member.rs @@ -83,4 +83,27 @@ impl FromDB for Member { } return Response::Other(NO_CONN_MSG); } + + async fn delete(p: &Pool, id: UBigInt) -> Response { + if let Ok(conn) = p.get_conn().await { + let q = "DELETE from members WHERE id = :id"; + let db_result: Result + = conn.drop_exec(q, params!{"id" => id}).await; + match Member::get(p, id).await { + Response::Row(_) => { + if let Ok(conn) = db_result { + return match conn.prep_exec("", params!{"id" => id}).await { + Ok(_) => Response::Success, + Err(_) => Response::Other("Could not delete entry") + } + } + return Response::Success + }, + Response::Empty => return Response::Empty, + _ => return Response::Other("Query failed in Member::delete") + } + } + + return Response::Empty; + } }