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}