sqlorm_macros/
lib.rs

1use proc_macro::TokenStream;
2use quote::ToTokens;
3use syn::ItemStruct;
4use syn::parse_macro_input;
5
6mod naming;
7mod traits;
8
9use crate::entity::EntityStruct;
10mod entity;
11mod qb;
12mod sql;
13
14mod attrs;
15mod gen_columns;
16mod relations;
17
18#[proc_macro_derive(Entity, attributes(sql))]
19pub fn entity(input: TokenStream) -> TokenStream {
20    let es = parse_macro_input!(input as EntityStruct);
21    entity::handle(es).into()
22}
23
24#[proc_macro_attribute]
25pub fn table(_: TokenStream, input: TokenStream) -> TokenStream {
26    let model = parse_macro_input!(input as ItemStruct);
27    let model = model.to_token_stream();
28
29    quote::quote! {
30        #[derive(::sqlorm::sqlx::FromRow,::sqlorm::Entity)]
31        #model
32    }
33    .into()
34}