chronon_backend_sql_common/
macros.rs1#[macro_export]
7macro_rules! sql_execute {
8 ($store:expr, $sql:expr, |$q:ident| $body:expr) => {{
9 match &$store.pool {
10 $crate::SqlPool::Sqlite(pool) => {
11 let $q = sqlx::query($sql);
12 let $q = $body;
13 $q.execute(pool).await.map_err(|e| $crate::error_map::map_err(&e))?;
14 }
15 $crate::SqlPool::Postgres(pool) => {
16 let $q = sqlx::query($sql);
17 let $q = $body;
18 $q.execute(pool).await.map_err(|e| $crate::error_map::map_err(&e))?;
19 }
20 }
21 Ok::<(), chronon_core::error::ChrononError>(())
22 }};
23}
24
25#[macro_export]
27macro_rules! sql_fetch_optional_map {
28 ($store:expr, $sql:expr, |$q:ident| $bind:expr, |$row:ident| $map:expr) => {{
29 match &$store.pool {
30 $crate::SqlPool::Sqlite(pool) => {
31 let $q = sqlx::query($sql);
32 let $q = $bind;
33 match $q.fetch_optional(pool).await.map_err(|e| $crate::error_map::map_err(&e))? {
34 Some($row) => Ok(Some($map?)),
35 None => Ok(None),
36 }
37 }
38 $crate::SqlPool::Postgres(pool) => {
39 let $q = sqlx::query($sql);
40 let $q = $bind;
41 match $q.fetch_optional(pool).await.map_err(|e| $crate::error_map::map_err(&e))? {
42 Some($row) => Ok(Some($map?)),
43 None => Ok(None),
44 }
45 }
46 }
47 }};
48}
49
50#[macro_export]
52macro_rules! sql_fetch_one_map {
53 ($store:expr, $sql:expr, |$q:ident| $bind:expr, |$row:ident| $map:expr) => {{
54 match &$store.pool {
55 $crate::SqlPool::Sqlite(pool) => {
56 let $q = sqlx::query($sql);
57 let $q = $bind;
58 let $row = $q.fetch_one(pool).await.map_err(|e| $crate::error_map::map_err(&e))?;
59 $map
60 }
61 $crate::SqlPool::Postgres(pool) => {
62 let $q = sqlx::query($sql);
63 let $q = $bind;
64 let $row = $q.fetch_one(pool).await.map_err(|e| $crate::error_map::map_err(&e))?;
65 $map
66 }
67 }
68 }};
69}
70
71#[macro_export]
73macro_rules! sql_fetch_all_map {
74 ($store:expr, $sql:expr, |$q:ident| $bind:expr, |$row:ident| $map:expr) => {{
75 match &$store.pool {
76 $crate::SqlPool::Sqlite(pool) => {
77 let $q = sqlx::query($sql);
78 let $q = $bind;
79 let rows = $q.fetch_all(pool).await.map_err(|e| $crate::error_map::map_err(&e))?;
80 rows.iter().map(|$row| $map).collect::<chronon_core::Result<Vec<_>>>()
81 }
82 $crate::SqlPool::Postgres(pool) => {
83 let $q = sqlx::query($sql);
84 let $q = $bind;
85 let rows = $q.fetch_all(pool).await.map_err(|e| $crate::error_map::map_err(&e))?;
86 rows.iter().map(|$row| $map).collect::<chronon_core::Result<Vec<_>>>()
87 }
88 }
89 }};
90}