Lines
0 %
Functions
Branches
100 %
use axum::{
Extension, Json,
extract::Path,
http::StatusCode,
response::{IntoResponse, Redirect},
};
use server::command::transaction::DeleteTransaction;
use sqlx::types::Uuid;
use crate::jwt_auth::JWTAuthMiddleware;
pub async fn transaction_delete_submit(
Path(transaction_id): Path<String>,
Extension(jwt_auth): Extension<JWTAuthMiddleware>,
) -> Result<impl IntoResponse, (StatusCode, Json<serde_json::Value>)> {
let user = &jwt_auth.user;
let tx_uuid = Uuid::parse_str(&transaction_id).map_err(|_| {
let error_response = serde_json::json!({
"status": "fail",
"message": "Invalid transaction ID format",
});
(StatusCode::BAD_REQUEST, Json(error_response))
})?;
match DeleteTransaction::new()
.user_id(user.id)
.transaction_id(tx_uuid)
.run()
.await
{
Ok(_) => Ok(Redirect::to("/transaction/list")),
Err(e) => {
"message": format!("Failed to delete transaction: {:?}", e),
log::error!("Failed to delete transaction: {e:?}");
Err((StatusCode::INTERNAL_SERVER_ERROR, Json(error_response)))
}