~starkingdoms/starkingdoms

ref: 3f9784408f5c43e366106d0f547d80d9b33ffa37 starkingdoms/starkingdoms-api/src/macros.rs -rw-r--r-- 2.3 KiB
3f978440 — ghostlyzsh attaching and despawning modules works 2 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#[macro_export]
macro_rules! err {
    ($c:expr,$e:expr) => {
        return $crate::response::JsonAPIResponse::Error($c, $e)
    };
}
#[macro_export]
macro_rules! resp_ok {
    ($e:expr) => {
        return $crate::response::JsonAPIResponse::Success(actix_web::http::StatusCode::OK, $e)
    };
}

#[macro_export]
macro_rules! ok {
    ($e:expr) => {
        $crate::resp_ok!($crate::response::SuccessResponse {
            success: true,
            data: $e
        })
    };
}

#[macro_export]
macro_rules! resp_ok_code {
    ($c:expr,$e:expr) => {
        return $crate::response::JsonAPIResponse::Success($c, $e)
    };
}

#[macro_export]
macro_rules! ok_code {
    ($r:ident,$c:expr,$e:expr) => {
        $crate::resp_ok_code!(
            $c,
            $crate::response::SuccessResponse {
                success: true,
                data: $e
            }
        )
    };
}

#[macro_export]
macro_rules! internal_error {
    ($e:expr) => {{
        log::error!("internal error: {}", $e);
        $crate::err!(
            actix_web::http::StatusCode::INTERNAL_SERVER_ERROR,
            $crate::make_err!("ERR_INTERNAL_ERROR", $e)
        );
    }};
}

#[macro_export]
macro_rules! handle_error {
    ($e:expr) => {
        match $e {
            Ok(r) => r,
            Err(e) => {
                $crate::internal_error!(e)
            }
        }
    };
}

#[macro_export]
macro_rules! handle_error_custom {
    ($e:expr,$c:expr,$r:expr) => {
        match $e {
            Ok(r) => r,
            Err(e) => {
                log::error!("error: {}", e);
                $crate::err!($c, $r)
            }
        }
    };
}
#[macro_export]
macro_rules! make_err {
    ($c:expr,$m:expr) => {
        $crate::error::APIErrorResponse {
            success: false,
            code: $c.to_string(),
            message: $m.to_string(),
        }
    };
}

#[macro_export]
macro_rules! unique {
    ($k:expr) => {
        IndexModel::builder()
            .keys($k)
            .options(IndexOptions::builder().unique(true).build())
            .build()
    };
}

#[macro_export]
macro_rules! auth {
    ($r:expr,$s:expr) => {
        $crate::handle_error_custom!(
            $crate::tokens::enforce_session(&$r, &$s).await,
            actix_web::http::StatusCode::UNAUTHORIZED,
            $crate::make_err!("ERR_UNAUTHORIZED", "unauthorized")
        )
    };
}