bolt_web/
macros.rs

1#[macro_export]
2macro_rules! bolt_handler {
3    ($fn_name:ident) => {
4        $crate::paste::paste! {
5            pub struct [<$fn_name:camel Handler>];
6
7            #[ $crate::async_trait::async_trait ]
8            impl $crate::types::Handler for [<$fn_name:camel Handler>] {
9                async fn handle(
10                    &self,
11                    req: &mut $crate::request::RequestBody,
12                    res: &mut $crate::response::ResponseWriter
13                ) {
14                    $fn_name(req, res).await;
15                }
16            }
17
18            #[allow(non_upper_case_globals)]
19            pub const [<$fn_name:upper _HANDLER>]: [<$fn_name:camel Handler>] = [<$fn_name:camel Handler>];
20        }
21    };
22}
23
24#[macro_export]
25macro_rules! bolt_middleware {
26    ($fn_name:ident) => {
27        $crate::paste::paste! {
28            pub struct [<$fn_name:camel Middleware>];
29
30            #[ $crate::async_trait::async_trait ]
31            impl $crate::types::Middleware for [<$fn_name:camel Middleware>] {
32                async fn run(&self, req: &mut $crate::request::RequestBody, res: &mut $crate::response::ResponseWriter) {
33                    $fn_name(req, res).await;
34                }
35            }
36
37            #[allow(dead_code, non_upper_case_globals)]
38            pub const [<$fn_name:upper _MIDDLEWARE>]: [<$fn_name:camel Middleware>] = [<$fn_name:camel Middleware>];
39        }
40    };
41}
42
43#[macro_export]
44macro_rules! bolt_error_handler {
45    ($fn_name:ident) => {
46        $crate::paste::paste! {
47            pub struct [<$fn_name:camel ErrorHandler>];
48
49            #[ $crate::async_trait::async_trait ]
50            impl $crate::types::ErrorHandler for [<$fn_name:camel ErrorHandler>] {
51                async fn run(&self, msg: String, res: &mut $crate::response::ResponseWriter) {
52                    $fn_name(msg, res).await;
53                }
54            }
55
56            #[allow(non_upper_case_globals, dead_code)]
57            pub const [<$fn_name:upper _ERROR_HANDLER>]: [<$fn_name:camel ErrorHandler>] = [<$fn_name:camel ErrorHandler>];
58        }
59    };
60}