mod derives;
use proc_macro::TokenStream;
use quote::quote;
use syn::{parse_macro_input, Data, DeriveInput, Fields, Visibility, Type, PathArguments, GenericArgument, Error};
#[proc_macro_derive(TableData, attributes(mydb, table_name, table_field))]
pub fn table_data_derive(input: TokenStream) -> TokenStream {
let DeriveInput {
ident, data, attrs, vis, generics,
} = parse_macro_input!(input as DeriveInput);
let ts = derives::handle_entity_model(data.clone(), attrs.clone())
.unwrap_or_else(Error::into_compile_error);
TokenStream::from(ts)
}
#[proc_macro_derive(Getters, attributes())]
pub fn getters_derive(input: TokenStream) -> TokenStream {
let DeriveInput {
ident, data, attrs, vis, generics,
} = parse_macro_input!(input as DeriveInput);
let ts = derives::handle_getters(data, ident)
.unwrap_or_else(Error::into_compile_error);
TokenStream::from(ts)
}
#[proc_macro_derive(Setters, attributes())]
pub fn setters_derive(input: TokenStream) -> TokenStream {
let DeriveInput {
ident, data, attrs, vis, generics,
} = parse_macro_input!(input as DeriveInput);
let ts = derives::handle_setters(data, ident)
.unwrap_or_else(Error::into_compile_error);
TokenStream::from(ts)
}