#[macro_export]
macro_rules! sql_execute {
($store:expr, $sql:expr, |$q:ident| $body:expr) => {{
match &$store.pool {
$crate::SqlPool::Sqlite(pool) => {
let $q = sqlx::query($sql);
let $q = $body;
$q.execute(pool).await.map_err($crate::error_map::map_err)?;
}
$crate::SqlPool::Postgres(pool) => {
let $q = sqlx::query($sql);
let $q = $body;
$q.execute(pool).await.map_err($crate::error_map::map_err)?;
}
}
Ok::<(), chronon_core::error::ChrononError>(())
}};
}
#[macro_export]
macro_rules! sql_fetch_optional_map {
($store:expr, $sql:expr, |$q:ident| $bind:expr, |$row:ident| $map:expr) => {{
match &$store.pool {
$crate::SqlPool::Sqlite(pool) => {
let $q = sqlx::query($sql);
let $q = $bind;
match $q
.fetch_optional(pool)
.await
.map_err($crate::error_map::map_err)?
{
Some($row) => Ok(Some($map?)),
None => Ok(None),
}
}
$crate::SqlPool::Postgres(pool) => {
let $q = sqlx::query($sql);
let $q = $bind;
match $q
.fetch_optional(pool)
.await
.map_err($crate::error_map::map_err)?
{
Some($row) => Ok(Some($map?)),
None => Ok(None),
}
}
}
}};
}
#[macro_export]
macro_rules! sql_fetch_one_map {
($store:expr, $sql:expr, |$q:ident| $bind:expr, |$row:ident| $map:expr) => {{
match &$store.pool {
$crate::SqlPool::Sqlite(pool) => {
let $q = sqlx::query($sql);
let $q = $bind;
let $row = $q
.fetch_one(pool)
.await
.map_err($crate::error_map::map_err)?;
$map
}
$crate::SqlPool::Postgres(pool) => {
let $q = sqlx::query($sql);
let $q = $bind;
let $row = $q
.fetch_one(pool)
.await
.map_err($crate::error_map::map_err)?;
$map
}
}
}};
}
#[macro_export]
macro_rules! sql_fetch_all_map {
($store:expr, $sql:expr, |$q:ident| $bind:expr, |$row:ident| $map:expr) => {{
match &$store.pool {
$crate::SqlPool::Sqlite(pool) => {
let $q = sqlx::query($sql);
let $q = $bind;
let rows = $q
.fetch_all(pool)
.await
.map_err($crate::error_map::map_err)?;
rows.iter()
.map(|$row| $map)
.collect::<chronon_core::Result<Vec<_>>>()
}
$crate::SqlPool::Postgres(pool) => {
let $q = sqlx::query($sql);
let $q = $bind;
let rows = $q
.fetch_all(pool)
.await
.map_err($crate::error_map::map_err)?;
rows.iter()
.map(|$row| $map)
.collect::<chronon_core::Result<Vec<_>>>()
}
}
}};
}