#[macro_export]
macro_rules! err {
($c:expr,$e:expr) => {
return $crate::response::JsonAPIResponse::Error($c, $e)
};
}
#[macro_export]
macro_rules! resp_ok {
($e:expr) => {
return $crate::response::JsonAPIResponse::Success(actix_web::http::StatusCode::OK, $e)
};
}
#[macro_export]
macro_rules! ok {
($e:expr) => {
$crate::resp_ok!($crate::response::SuccessResponse {
success: true,
data: $e
})
};
}
#[macro_export]
macro_rules! resp_ok_code {
($c:expr,$e:expr) => {
return $crate::response::JsonAPIResponse::Success($c, $e)
};
}
#[macro_export]
macro_rules! ok_code {
($r:ident,$c:expr,$e:expr) => {
$crate::resp_ok_code!(
$c,
$crate::response::SuccessResponse {
success: true,
data: $e
}
)
};
}
#[macro_export]
macro_rules! internal_error {
($e:expr) => {{
log::error!("internal error: {}", $e);
$crate::err!(
actix_web::http::StatusCode::INTERNAL_SERVER_ERROR,
$crate::make_err!("ERR_INTERNAL_ERROR", $e)
);
}};
}
#[macro_export]
macro_rules! handle_error {
($e:expr) => {
match $e {
Ok(r) => r,
Err(e) => {
$crate::internal_error!(e)
}
}
};
}
#[macro_export]
macro_rules! handle_error_custom {
($e:expr,$c:expr,$r:expr) => {
match $e {
Ok(r) => r,
Err(e) => {
log::error!("error: {}", e);
$crate::err!($c, $r)
}
}
};
}
#[macro_export]
macro_rules! make_err {
($c:expr,$m:expr) => {
$crate::error::APIErrorResponse {
success: false,
code: $c.to_string(),
message: $m.to_string(),
}
};
}
#[macro_export]
macro_rules! unique {
($k:expr) => {
IndexModel::builder()
.keys($k)
.options(IndexOptions::builder().unique(true).build())
.build()
};
}
#[macro_export]
macro_rules! auth {
($r:expr,$s:expr) => {
$crate::handle_error_custom!(
$crate::tokens::enforce_session(&$r, &$s).await,
actix_web::http::StatusCode::UNAUTHORIZED,
$crate::make_err!("ERR_UNAUTHORIZED", "unauthorized")
)
};
}