mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-11-02 12:06:56 +08:00
98 lines
2.5 KiB
Rust
98 lines
2.5 KiB
Rust
#![allow(missing_docs)]
|
|
|
|
#[macro_export]
|
|
macro_rules! newtype_impl {
|
|
($is_pub:vis, $name:ident, $ty_path:path) => {
|
|
impl std::ops::Deref for $name {
|
|
type Target = $ty_path;
|
|
|
|
fn deref(&self) -> &Self::Target {
|
|
&self.0
|
|
}
|
|
}
|
|
|
|
impl std::ops::DerefMut for $name {
|
|
fn deref_mut(&mut self) -> &mut Self::Target {
|
|
&mut self.0
|
|
}
|
|
}
|
|
|
|
impl From<$ty_path> for $name {
|
|
fn from(ty: $ty_path) -> Self {
|
|
Self(ty)
|
|
}
|
|
}
|
|
|
|
impl $name {
|
|
pub fn into_inner(self) -> $ty_path {
|
|
self.0
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
#[macro_export]
|
|
macro_rules! newtype {
|
|
($is_pub:vis $name:ident = $ty_path:path) => {
|
|
$is_pub struct $name(pub $ty_path);
|
|
|
|
$crate::newtype_impl!($is_pub, $name, $ty_path);
|
|
};
|
|
|
|
($is_pub:vis $name:ident = $ty_path:path, derives = ($($trt:path),*)) => {
|
|
#[derive($($trt),*)]
|
|
$is_pub struct $name(pub $ty_path);
|
|
|
|
$crate::newtype_impl!($is_pub, $name, $ty_path);
|
|
};
|
|
}
|
|
|
|
/// Use this to ensure that the corresponding
|
|
/// openapi route has been implemented in the openapi crate
|
|
#[macro_export]
|
|
macro_rules! openapi_route {
|
|
($route_name: ident) => {{
|
|
#[cfg(feature = "openapi")]
|
|
use openapi::routes::$route_name as _;
|
|
|
|
$route_name
|
|
}};
|
|
}
|
|
|
|
#[macro_export]
|
|
macro_rules! fallback_reverse_lookup_not_found {
|
|
($a:expr,$b:expr) => {
|
|
match $a {
|
|
Ok(res) => res,
|
|
Err(err) => {
|
|
router_env::logger::error!(reverse_lookup_fallback = %err);
|
|
match err.current_context() {
|
|
errors::StorageError::ValueNotFound(_) => return $b,
|
|
errors::StorageError::DatabaseError(data_err) => {
|
|
match data_err.current_context() {
|
|
diesel_models::errors::DatabaseError::NotFound => return $b,
|
|
_ => return Err(err)
|
|
}
|
|
}
|
|
_=> return Err(err)
|
|
}
|
|
}
|
|
};
|
|
};
|
|
}
|
|
|
|
#[macro_export]
|
|
macro_rules! collect_missing_value_keys {
|
|
[$(($key:literal, $option:expr)),+] => {
|
|
{
|
|
let mut keys: Vec<&'static str> = Vec::new();
|
|
$(
|
|
if $option.is_none() {
|
|
keys.push($key);
|
|
}
|
|
)*
|
|
keys
|
|
}
|
|
};
|
|
}
|