sea_query_derive/
lib.rs

1#![forbid(unsafe_code)]
2
3use proc_macro::TokenStream;
4use syn::{DeriveInput, parse_macro_input};
5
6mod enum_def;
7mod iden;
8mod raw_query;
9mod raw_sql;
10mod sqlx;
11
12#[proc_macro_derive(Iden, attributes(iden, method))]
13pub fn derive_iden(input: TokenStream) -> TokenStream {
14    let input: DeriveInput = parse_macro_input!(input);
15    iden::expand(input)
16}
17
18#[proc_macro_derive(IdenStatic, attributes(iden, method))]
19pub fn derive_iden_static(input: TokenStream) -> TokenStream {
20    let input: DeriveInput = parse_macro_input!(input);
21    iden::iden_static::expand(input)
22}
23
24#[proc_macro_attribute]
25pub fn enum_def(args: TokenStream, input: TokenStream) -> TokenStream {
26    enum_def::expand(args, input)
27}
28
29#[proc_macro]
30pub fn raw_sql(input: TokenStream) -> TokenStream {
31    match raw_sql::expand(input) {
32        Ok(token_stream) => token_stream.into(),
33        Err(err) => err.to_compile_error().into(),
34    }
35}
36
37#[proc_macro]
38pub fn raw_query(input: TokenStream) -> TokenStream {
39    match raw_query::expand(input) {
40        Ok(token_stream) => token_stream.into(),
41        Err(err) => err.to_compile_error().into(),
42    }
43}
44
45#[proc_macro]
46pub fn sqlx_sqlite_query(input: TokenStream) -> TokenStream {
47    match sqlx::sqlite_query(input) {
48        Ok(token_stream) => token_stream.into(),
49        Err(err) => err.to_compile_error().into(),
50    }
51}
52
53#[proc_macro]
54pub fn sqlx_sqlite_query_as(input: TokenStream) -> TokenStream {
55    match sqlx::sqlite_query_as(input) {
56        Ok(token_stream) => token_stream.into(),
57        Err(err) => err.to_compile_error().into(),
58    }
59}
60
61#[proc_macro]
62pub fn sqlx_mysql_query(input: TokenStream) -> TokenStream {
63    match sqlx::mysql_query(input) {
64        Ok(token_stream) => token_stream.into(),
65        Err(err) => err.to_compile_error().into(),
66    }
67}
68
69#[proc_macro]
70pub fn sqlx_mysql_query_as(input: TokenStream) -> TokenStream {
71    match sqlx::mysql_query_as(input) {
72        Ok(token_stream) => token_stream.into(),
73        Err(err) => err.to_compile_error().into(),
74    }
75}
76
77#[proc_macro]
78pub fn sqlx_postgres_query(input: TokenStream) -> TokenStream {
79    match sqlx::postgres_query(input) {
80        Ok(token_stream) => token_stream.into(),
81        Err(err) => err.to_compile_error().into(),
82    }
83}
84
85#[proc_macro]
86pub fn sqlx_postgres_query_as(input: TokenStream) -> TokenStream {
87    match sqlx::postgres_query_as(input) {
88        Ok(token_stream) => token_stream.into(),
89        Err(err) => err.to_compile_error().into(),
90    }
91}