mod cfg;
mod dao;
mod db;
mod dto;
mod log;
mod svc;
mod vo;
mod web;
use crate::cfg::{WatchCfgFileArgs, watch_cfg_file_macro};
use crate::dao::{DaoArgs, dao_macro};
use crate::db::MigrateArgs;
use crate::dto::crud_dto_macro;
use crate::log::{LogCallArgs, log_call_macro};
use crate::svc::{DbUnwrapArgs, db_unwrap_macro, svc_macro};
use crate::vo::vo_macro;
use crate::web::{ApiDocArgs, RouterArgs, api_doc_macro, ctrl_macro, router_macro};
use proc_macro::TokenStream;
use syn::{DeriveInput, ItemFn, ItemStruct, parse_macro_input};
#[proc_macro]
pub fn watch_cfg_file(args: TokenStream) -> TokenStream {
let args = parse_macro_input!(args as WatchCfgFileArgs);
watch_cfg_file_macro(args).into()
}
#[proc_macro_attribute]
pub fn log_call(args: TokenStream, input: TokenStream) -> TokenStream {
let args = parse_macro_input!(args as LogCallArgs);
let input = parse_macro_input!(input as ItemFn);
log_call_macro(args, input).into()
}
#[proc_macro]
pub fn db_migrate(args: TokenStream) -> TokenStream {
let args = parse_macro_input!(args as MigrateArgs);
db::db_migrate_macro(args).into()
}
#[proc_macro_attribute]
pub fn crud_dto(_args: TokenStream, input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as ItemStruct);
crud_dto_macro(input).into()
}
#[proc_macro_attribute]
pub fn vo(_args: TokenStream, input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as DeriveInput);
vo_macro(input).into()
}
#[proc_macro_attribute]
pub fn dao(args: TokenStream, input: TokenStream) -> TokenStream {
let args = parse_macro_input!(args as DaoArgs);
let input = parse_macro_input!(input as ItemStruct);
dao_macro(args, input).into()
}
#[proc_macro_attribute]
pub fn db_unwrap(args: TokenStream, input: TokenStream) -> TokenStream {
let args = parse_macro_input!(args as DbUnwrapArgs);
let input = parse_macro_input!(input as ItemFn);
db_unwrap_macro(args, input).into()
}
#[proc_macro_attribute]
pub fn svc(_args: TokenStream, input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as ItemStruct);
svc_macro(input).into()
}
#[proc_macro_attribute]
pub fn ctrl(_args: TokenStream, input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as ItemStruct);
ctrl_macro(input).into()
}
#[proc_macro_attribute]
pub fn router(args: TokenStream, input: TokenStream) -> TokenStream {
let args = parse_macro_input!(args as RouterArgs);
let input = parse_macro_input!(input as ItemStruct);
router_macro(args, input).into()
}
#[proc_macro_attribute]
pub fn api_doc(args: TokenStream, input: TokenStream) -> TokenStream {
let args = parse_macro_input!(args as ApiDocArgs);
let input = parse_macro_input!(input as ItemStruct);
api_doc_macro(args, input).into()
}