Skip to main content

ormer_derive/
lib.rs

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}