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