ssql_macro/
lib.rs

1use proc_macro::TokenStream;
2
3use derive_ssql::DeriveSsql;
4
5mod derive_ssql;
6mod utils;
7
8#[proc_macro_derive(ORM, attributes(ssql))]
9pub fn ssql(tokens: TokenStream) -> TokenStream {
10    let ast: syn::DeriveInput = syn::parse(tokens).unwrap();
11
12    let mut impls = DeriveSsql::new(&ast);
13    impls.impl_table_name();
14    impls.impl_fields();
15
16    impls.impl_query();
17    impls.impl_primary_key();
18    impls.impl_insert();
19    impls.impl_insert_ignore_pk();
20    impls.impl_insert_many();
21    impls.impl_update();
22    impls.impl_delete();
23    impls.impl_relationship();
24
25    impls.impl_row_to_struct();
26
27    #[cfg(feature = "serde")]
28    impls.impl_row_to_json();
29
30    #[cfg(feature = "polars")]
31    impls.impl_dataframe();
32
33    impls.finalize()
34}
35