extern crate proc_macro;
use helper::check_attributes;
use impl_by_field::generate_impl_from_row;
use proc_macro::TokenStream;
use impl_crud::generate_crud;
use syn::{parse_macro_input, DeriveInput};
mod util;
mod impl_by_field;
mod db_type;
mod impl_crud;
mod helper;
#[proc_macro_derive(Crud,
attributes(
co_orm, // co_orm(id), co_orm(skip_insert), co_orm(rename="name"), co_orm(skip), co_orm(update), co_orm(by),
)
)]
pub fn sql_derive_crud(input: TokenStream) -> TokenStream{
let input = parse_macro_input!(input as DeriveInput);
if let Err(e) = check_attributes(&input.attrs){
return e.to_compile_error().into();
}
generate_crud(input)
}
#[proc_macro_derive(FromRow)]
pub fn sql_derive_form_row(input: TokenStream) -> TokenStream{
let input = parse_macro_input!(input as DeriveInput);
generate_impl_from_row(&input).into()
}