conservator_macro 0.1.3

conservator macro
Documentation
use proc_macro::TokenStream;
use proc_macro_error::{abort, proc_macro_error};

mod authorization;
mod auto;
mod creatable;
mod domain;
mod sql;

#[proc_macro_derive(Domain, attributes(domain))]
#[proc_macro_error]
pub fn derive_domain_fn(input: TokenStream) -> TokenStream {
    let stream2 = proc_macro2::TokenStream::from(input);
    match domain::handler(stream2) {
        Ok(stream) => proc_macro::TokenStream::from(stream),
        Err((span, msg)) => abort! {span, msg},
    }
}

#[proc_macro_derive(Creatable)]
#[proc_macro_error]
pub fn derive_creatable_fn(input: TokenStream) -> TokenStream {
    let stream2 = proc_macro2::TokenStream::from(input);
    let stream1 = proc_macro::TokenStream::from(creatable::handle_creatable(stream2));
    stream1
}

#[proc_macro_attribute]
pub fn auto(_args: TokenStream, input: TokenStream) -> TokenStream {
    let stream2 = proc_macro2::TokenStream::from(input);
    let stream1 = proc_macro::TokenStream::from(auto::handler(stream2));
    stream1
}

#[proc_macro_attribute]
#[proc_macro_error]
pub fn sql(args: TokenStream, input: TokenStream) -> TokenStream {
    let args = proc_macro2::TokenStream::from(args);
    let stream2 = proc_macro2::TokenStream::from(input);
    match sql::handler(args, stream2) {
        Ok(stream) => proc_macro::TokenStream::from(stream),
        Err((span, msg)) => abort! {span, msg},
    }
}