sea_query_driver/lib.rs
1//! This crate is now deprecated. It is only compatible with sea-query up to 0.26
2#[allow(unused_imports)]
3use proc_macro::{self, TokenStream};
4
5#[cfg(feature = "rusqlite")]
6mod rusqlite;
7#[cfg(feature = "sqlx-mysql")]
8mod sqlx_mysql;
9#[cfg(feature = "sqlx-postgres")]
10mod sqlx_postgres;
11#[cfg(feature = "sqlx-sqlite")]
12mod sqlx_sqlite;
13#[cfg(any(
14 feature = "rusqlite",
15 feature = "sqlx-mysql",
16 feature = "sqlx-postgres",
17 feature = "sqlx-sqlite"
18))]
19mod utils;
20
21/// Macro for generate `rusqlite` driver.
22///
23/// Examples:
24/// ```
25/// sea_query::sea_query_driver_rusqlite!()
26/// ```
27///
28/// Specify a path to the `rusqlite` crate instance
29/// ```
30/// sea_query::sea_query_driver_rusqlite!(rusqlite = "...")
31/// ```
32///
33/// Specify a path to the `sea-query` crate instance
34/// ```
35/// sea_query::sea_query_driver_rusqlite!(sea_query = "...")
36/// ```
37///
38/// Specify paths to the `sea-query` and to the `rusqlite` crates instances
39/// ```
40/// sea_query::sea_query_driver_rusqlite!(rusqlite="...", sea_query="...")
41/// // or
42/// sea_query::sea_query_driver_rusqlite!(sea_query="...", rusqlite="...")
43/// ```
44#[cfg(feature = "rusqlite")]
45#[proc_macro]
46pub fn sea_query_driver_rusqlite(input: TokenStream) -> TokenStream {
47 rusqlite::sea_query_driver_rusqlite_impl(input)
48}
49
50/// Macro for generate new mod for sqlx-mysql.
51///
52/// Examples:
53/// ```
54/// sea_query::sea_query_driver_mysql!()
55/// ```
56///
57/// Specify a path to the `sqlx` crate instance
58/// ```
59/// sea_query::sea_query_driver_mysql!(sqlx = "...")
60/// ```
61///
62/// Specify a path to the `sea-query` crate instance
63/// ```
64/// sea_query::sea_query_driver_mysql!(sea_query = "...")
65/// ```
66///
67/// Specify pathes to the `sea-query` and to the `sqlx` crates instances
68/// ```
69/// sea_query::sea_query_driver_mysql!(sqlx="...", sea_query="...")
70/// // or
71/// sea_query::sea_query_driver_mysql!(sea_query="...", sqlx="...")
72/// ```
73#[cfg(feature = "sqlx-mysql")]
74#[proc_macro]
75pub fn sea_query_driver_mysql(input: TokenStream) -> TokenStream {
76 sqlx_mysql::sea_query_driver_mysql_impl(input)
77}
78
79/// Macro to easily bind [`Values`] to [`sqlx::query::Query`] or to [`sqlx::query::QueryAs`] for sqlx-mysql.
80#[cfg(feature = "sqlx-mysql")]
81#[proc_macro]
82pub fn bind_params_sqlx_mysql(input: TokenStream) -> TokenStream {
83 sqlx_mysql::bind_params_sqlx_mysql_impl(input)
84}
85
86/// Macro to generate sqlx-postgres driver.
87///
88/// Examples:
89/// ```
90/// sea_query::sea_query_driver_postgres!()
91/// ```
92///
93/// Specify a path to the `sqlx` crate instance
94/// ```
95/// sea_query::sea_query_driver_postgres!(sqlx = "...")
96/// ```
97///
98/// Specify a path to the `sea-query` crate instance
99/// ```
100/// sea_query::sea_query_driver_postgres!(sea_query = "...")
101/// ```
102///
103/// Specify pathes to the `sea-query` and to the `sqlx` crates instances
104/// ```
105/// sea_query::sea_query_driver_postgres!(sqlx="...", sea_query="...")
106/// // or
107/// sea_query::sea_query_driver_postgres!(sea_query="...", sqlx="...")
108/// ```
109#[cfg(feature = "sqlx-postgres")]
110#[proc_macro]
111pub fn sea_query_driver_postgres(input: TokenStream) -> TokenStream {
112 sqlx_postgres::sea_query_driver_postgres_impl(input)
113}
114
115/// Macro to easily bind [`Values`] to [`sqlx::query::Query`] or to [`sqlx::query::QueryAs`] for sqlx-postgres.
116#[cfg(feature = "sqlx-postgres")]
117#[proc_macro]
118pub fn bind_params_sqlx_postgres(input: TokenStream) -> TokenStream {
119 sqlx_postgres::bind_params_sqlx_postgres_impl(input)
120}
121
122/// Macro to generate sqlx-sqlite driver.
123///
124/// Examples:
125/// ```
126/// sea_query::sea_query_driver_sqlite!()
127/// ```
128///
129/// Specify a path to the `sqlx` crate instance
130/// ```
131/// sea_query::sea_query_driver_sqlite!(sqlx = "...")
132/// ```
133///
134/// Specify a path to the `sea-query` crate instance
135/// ```
136/// sea_query::sea_query_driver_sqlite!(sea_query = "...")
137/// ```
138///
139/// Specify pathes to the `sea-query` and to the `sqlx` crates instances
140/// ```
141/// sea_query::sea_query_driver_sqlite!(sqlx="...", sea_query="...")
142/// // or
143/// sea_query::sea_query_driver_sqlite!(sea_query="...", sqlx="...")
144/// ```
145#[cfg(feature = "sqlx-sqlite")]
146#[proc_macro]
147pub fn sea_query_driver_sqlite(input: TokenStream) -> TokenStream {
148 sqlx_sqlite::sea_query_driver_sqlite_impl(input)
149}
150
151/// Macro to easily bind [`Values`] to [`sqlx::query::Query`] or to [`sqlx::query::QueryAs`] for sqlx-sqlite.
152#[cfg(feature = "sqlx-sqlite")]
153#[proc_macro]
154pub fn bind_params_sqlx_sqlite(input: TokenStream) -> TokenStream {
155 sqlx_sqlite::bind_params_sqlx_sqlite(input)
156}