tailwag_orm_macros/
lib.rs

1use syn::parse_macro_input;
2mod logic;
3mod util;
4
5#[proc_macro_derive(GetTableDefinition, attributes(db_ignore))]
6pub fn derive_get_table_definition(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
7    let input = parse_macro_input!(input);
8    let impl_trait_tokens = logic::derive::get_table_definition::derive_struct(&input);
9    impl_trait_tokens.into()
10}
11
12#[proc_macro_derive(Deleteable, attributes(db_ignore))]
13pub fn derive_deleteable(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
14    let input = parse_macro_input!(input);
15    let impl_trait_tokens = logic::derive::deleteable::derive_struct(&input);
16    impl_trait_tokens.into()
17}
18
19#[proc_macro_derive(Updateable, attributes(db_ignore, string))]
20pub fn derive_updateable(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
21    let input = parse_macro_input!(input);
22    let impl_trait_tokens = logic::derive::updateable::derive_struct(&input);
23    impl_trait_tokens.into()
24}
25
26#[proc_macro_derive(Insertable, attributes(create_type, db_ignore, string, create_ignore))]
27pub fn derive_insertable(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
28    let input = parse_macro_input!(input);
29    let impl_trait_tokens = logic::derive::insertable::derive_struct(&input);
30    impl_trait_tokens.into()
31}
32
33#[proc_macro_derive(Id)]
34pub fn derive_id(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
35    let input = parse_macro_input!(input);
36    let impl_trait_tokens = logic::derive::id::derive_struct(&input);
37    impl_trait_tokens.into()
38}
39
40#[proc_macro_derive(Filterable, attributes(no_filter, db_ignore, string))]
41pub fn derive_filterable(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
42    let input = parse_macro_input!(input);
43    let impl_trait_tokens = logic::derive::filterable::derive_struct(&input);
44    impl_trait_tokens.into()
45}