1mod db_value;
2mod model;
3mod model_enum;
4mod raw;
5
6use proc_macro::TokenStream;
7
8#[proc_macro_derive(
9 Model,
10 attributes(
11 table,
12 column,
13 primary,
14 unique,
15 index,
16 foreign,
17 data_type,
18 default,
19 check,
20 hypertable,
21 compress,
22 mysql,
23 postgresql,
24 mssql,
25 clickhouse,
26 has_many,
27 belongs_to,
28 has_one,
29 through,
30 embed,
31 field,
32 filter,
33 version,
34 ormer_ignore
35 )
36)]
37pub fn derive_model(input: TokenStream) -> TokenStream {
38 let input = syn::parse_macro_input!(input as syn::DeriveInput);
39 model::derive_model(input).into()
40}
41
42#[proc_macro_derive(Embed, attributes(column, data_type))]
43pub fn derive_embed(input: TokenStream) -> TokenStream {
44 let input = syn::parse_macro_input!(input as syn::DeriveInput);
45 model::derive_embed(input).into()
46}
47
48#[proc_macro_derive(ViewModel, attributes(table, column, data_type))]
49pub fn derive_view_model(input: TokenStream) -> TokenStream {
50 let input = syn::parse_macro_input!(input as syn::DeriveInput);
51 model::derive_view_model(input).into()
52}
53
54#[proc_macro_derive(ModelEnum, attributes(db_type, column))]
55pub fn derive_model_enum(input: TokenStream) -> TokenStream {
56 let input = syn::parse_macro_input!(input as syn::DeriveInput);
57 model_enum::derive_model_enum(input).into()
58}
59
60#[proc_macro_derive(FieldType, attributes(db_type, column))]
61pub fn derive_field_type(input: TokenStream) -> TokenStream {
62 let input = syn::parse_macro_input!(input as syn::DeriveInput);
63 model_enum::derive_field_type(input).into()
64}
65
66#[proc_macro_derive(DbValue, attributes(db_type))]
67pub fn derive_db_value(input: TokenStream) -> TokenStream {
68 let input = syn::parse_macro_input!(input as syn::DeriveInput);
69 db_value::derive_db_value(input).into()
70}
71
72#[proc_macro_derive(InsertModel, attributes(table, column))]
73pub fn derive_insert_model(input: TokenStream) -> TokenStream {
74 let input = syn::parse_macro_input!(input as syn::DeriveInput);
75 model::derive_insert_model(input).into()
76}
77
78#[proc_macro]
79pub fn raw(input: TokenStream) -> TokenStream {
80 raw::expand(input.into()).into()
81}