co_orm/
macros.rs

1/*
2 * @Date: 2024-08-03 23:52:16
3 *
4 */
5
6/// sqlx::query_as
7/// ``` no_run,ignore
8/// query_as!(User, "select * from users where name = ?", name).fetch_one(&pool).await
9/// ```
10#[macro_export]
11macro_rules! query_as (
12    ($out_struct:path, $query:expr) => ( {
13        sqlx::query_as::<_, $out_struct>($query)
14    });
15    ($out_struct:path, $query:expr, $($args:expr),*) => ( {
16        sqlx::query_as::<_, $out_struct>($query)
17        $(.bind($args))*
18    })
19);
20
21/// sqlx::query
22/// ``` no_run,ignore
23/// query!("insert into users (name, password) values (?,?)", name, password).execute(&pool).await
24/// ```
25#[macro_export]
26macro_rules! query (
27    ($query:expr) => ( {
28        sqlx::query($query)
29    });
30    ($query:expr, $($args:expr),*) => ( {
31        sqlx::query($query)
32        $(.bind($args))*
33    })
34);
35
36#[cfg(feature = "mysql")]
37#[macro_export]
38macro_rules! args {
39    // ($sql:expr) => {
40    //     args!($sql,);
41    // };
42
43    ($($args:expr),*) => {{
44        use sqlx::Arguments;
45        let mut sqlargs = sqlx::mysql::MySqlArguments::default();
46        $(sqlargs.add($args);)*
47        sqlargs
48
49
50    }};
51}
52
53#[cfg(feature = "postgres")]
54#[macro_export]
55macro_rules! args {
56    ($($args:expr),*) => {{
57        use sqlx::Arguments;
58        let mut sqlargs = sqlx::postgres::PgArguments::default();
59        $(sqlargs.add($args);)*
60        sqlargs
61    }};
62
63}
64
65#[cfg(feature = "sqlite")]
66#[macro_export]
67macro_rules! args {
68    ($($args:expr),*) => {{
69        use sqlx::Arguments;
70        let mut sqlargs = sqlx::sqlite::SqliteArguments::default();
71        $(sqlargs.add($args);)*
72        sqlargs
73    }};
74}
75
76// #[cfg(feature = "mssql")]
77// #[macro_export]
78// macro_rules! args {
79//     ($($args:expr),*) => {{
80//         use sqlx::Arguments;
81//         let mut sqlargs = sqlx::mssql::MssqlArguments::default();
82//         $(sqlargs.add($args);)*
83//         sqlargs
84//     }};
85// }
86
87#[cfg(feature = "mysql")]
88#[macro_export]
89macro_rules! page_args {
90    ($($args:expr),*) => {{
91        use sqlx::Arguments;
92        let mut sqlargs = sqlx::mysql::MySqlArguments::default();
93        $(sqlargs.add($args);)*
94        let mut sqlargs2 = sqlx::mysql::MySqlArguments::default();
95        $(sqlargs2.add($args);)*
96        (sqlargs, sqlargs2)
97
98
99    }};
100}
101
102#[cfg(feature = "postgres")]
103#[macro_export]
104macro_rules! page_args {
105    ($($args:expr),*) => {{
106        use sqlx::Arguments;
107        let mut sqlargs = sqlx::postgres::PgArguments::default();
108        $(sqlargs.add($args);)*
109        let mut sqlargs2 = sqlx::postgres::PgArguments::default();
110        $(sqlargs2.add($args);)*
111        (sqlargs, sqlargs2)
112    }};
113
114}
115
116#[cfg(feature = "sqlite")]
117#[macro_export]
118macro_rules! page_args {
119    ($($args:expr),*) => {{
120        use sqlx::Arguments;
121        let mut sqlargs = sqlx::sqlite::SqliteArguments::default();
122        $(sqlargs.add($args);)*
123        let mut sqlargs2 = sqlx::sqlite::SqliteArguments::default();
124        $(sqlargs2.add($args);)*
125        (sqlargs, sqlargs2)
126    }};
127}
128
129// #[cfg(feature = "mssql")]
130// #[macro_export]
131// macro_rules! page_args {
132//     ($($args:expr),*) => {{
133//         use sqlx::Arguments;
134//         let mut sqlargs = sqlx::mssql::MssqlArguments::default();
135//         $(sqlargs.add($args);)*
136//         let mut sqlargs2 = sqlx::mssql::MssqlArguments::default();
137//         $(sqlargs2.add($args);)*
138//         (sqlargs, sqlargs2)
139//     }};
140// }