authbeam/api/
warnings.rs

1use crate::database::Database;
2use crate::model::{DatabaseError, WarningCreate};
3use databeam::prelude::DefaultReturn;
4
5use axum::response::IntoResponse;
6use axum::{
7    extract::{Path, State},
8    Json,
9};
10use axum_extra::extract::cookie::CookieJar;
11
12/// Create a warning
13pub async fn create_request(
14    jar: CookieJar,
15    State(database): State<Database>,
16    Json(props): Json<WarningCreate>,
17) -> impl IntoResponse {
18    // get user from token
19    let auth_user = match jar.get("__Secure-Token") {
20        Some(c) => match database.get_profile_by_unhashed(c.value_trimmed()).await {
21            Ok(ua) => ua,
22            Err(e) => return Json(e.to_json()),
23        },
24        None => return Json(DatabaseError::NotAllowed.to_json()),
25    };
26
27    // return
28    match database.create_warning(props, auth_user).await {
29        Ok(_) => Json(DefaultReturn {
30            success: true,
31            message: "Acceptable".to_string(),
32            payload: (),
33        }),
34        Err(e) => Json(e.to_json()),
35    }
36}
37
38/// Delete a warning
39pub async fn delete_request(
40    jar: CookieJar,
41    Path(id): Path<String>,
42    State(database): State<Database>,
43) -> impl IntoResponse {
44    // get user from token
45    let auth_user = match jar.get("__Secure-Token") {
46        Some(c) => match database.get_profile_by_unhashed(c.value_trimmed()).await {
47            Ok(ua) => ua,
48            Err(e) => return Json(e.to_json()),
49        },
50        None => return Json(DatabaseError::NotAllowed.to_json()),
51    };
52
53    // return
54    match database.delete_warning(&id, auth_user).await {
55        Ok(_) => Json(DefaultReturn {
56            success: true,
57            message: "Acceptable".to_string(),
58            payload: (),
59        }),
60        Err(e) => Json(e.to_json()),
61    }
62}