conservator_macro/
lib.rs

1use proc_macro::TokenStream;
2use proc_macro_error::{abort, proc_macro_error};
3
4mod authorization;
5mod auto;
6mod creatable;
7mod domain;
8mod sql;
9
10#[proc_macro_derive(Domain, attributes(domain))]
11#[proc_macro_error]
12pub fn derive_domain_fn(input: TokenStream) -> TokenStream {
13    let stream2 = proc_macro2::TokenStream::from(input);
14    match domain::handler(stream2) {
15        Ok(stream) => proc_macro::TokenStream::from(stream),
16        Err((span, msg)) => abort! {span, msg},
17    }
18}
19
20#[proc_macro_derive(Creatable)]
21#[proc_macro_error]
22pub fn derive_creatable_fn(input: TokenStream) -> TokenStream {
23    let stream2 = proc_macro2::TokenStream::from(input);
24    let stream1 = proc_macro::TokenStream::from(creatable::handle_creatable(stream2));
25    stream1
26}
27
28#[proc_macro_attribute]
29pub fn auto(_args: TokenStream, input: TokenStream) -> TokenStream {
30    let stream2 = proc_macro2::TokenStream::from(input);
31    let stream1 = proc_macro::TokenStream::from(auto::handler(stream2));
32    stream1
33}
34
35#[proc_macro_attribute]
36#[proc_macro_error]
37pub fn sql(args: TokenStream, input: TokenStream) -> TokenStream {
38    let args = proc_macro2::TokenStream::from(args);
39    let stream2 = proc_macro2::TokenStream::from(input);
40    match sql::handler(args, stream2) {
41        Ok(stream) => proc_macro::TokenStream::from(stream),
42        Err((span, msg)) => abort! {span, msg},
43    }
44}