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
12pub async fn create_request(
14 jar: CookieJar,
15 State(database): State<Database>,
16 Json(props): Json<WarningCreate>,
17) -> impl IntoResponse {
18 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 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
38pub async fn delete_request(
40 jar: CookieJar,
41 Path(id): Path<String>,
42 State(database): State<Database>,
43) -> impl IntoResponse {
44 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 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}