sea_query_derive/
lib.rs

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