#[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") ) }; }