1#[macro_export]
2macro_rules! bolt_handler {
3 ($fn_name:ident) => {
4 $crate::paste::paste! {
5 pub struct [<$fn_name:camel Handler>];
6
7 #[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 #[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 #[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}