extern crate proc_macro;
mod common {
pub mod handler;
pub mod service;
pub mod state;
}
mod core {
pub mod dto;
pub mod param;
pub mod query;
}
use crate::core::dto::dto_macro;
use crate::core::param::param_macro;
use crate::core::query::query_macro;
use common::handler::handler_macro;
use common::service::service_macro;
use proc_macro::TokenStream;
#[proc_macro_attribute]
pub fn handler(args: TokenStream, input: TokenStream) -> TokenStream {
handler_macro(args, input)
}
#[proc_macro_derive(Dto)]
pub fn dto_derive_dto(input: TokenStream) -> TokenStream {
dto_macro(input)
}
#[proc_macro_derive(Service)]
pub fn service_derive_dto(input: TokenStream) -> TokenStream {
service_macro(input)
}
#[proc_macro_derive(Query)]
pub fn query_derive_macro(input: TokenStream) -> TokenStream {
query_macro(input)
}
#[proc_macro_derive(Param)]
pub fn param_derive_macro(input: TokenStream) -> TokenStream {
param_macro(input)
}
#[proc_macro_derive(AppState)]
pub fn app_state_derive_macro(input: TokenStream) -> TokenStream {
common::state::derive_app_state_macro(input)
}