mod http_error;
mod obfuscate_errors;
mod panic_handler;
pub use http_error::*;
pub use obfuscate_errors::*;
pub use panic_handler::*;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum OrderByError {
#[error("Field is not sortable")]
InvalidField,
#[error("Field is not sortable in the requested direction")]
InvalidDirection,
}
impl HttpError for OrderByError {
type Detail = ();
fn status_code(&self) -> hyper::StatusCode {
hyper::StatusCode::BAD_REQUEST
}
fn error_kind(&self) -> &'static str {
ErrorKind::OrderBy.as_str()
}
fn error_detail(&self) -> Self::Detail {
()
}
}
#[macro_export]
macro_rules! downref_report_frame {
($frame:ident, $func:expr, $error_type:ty) => {
$frame.downcast_ref::<$error_type>().map($func)
};
($frame:ident, $func:expr, $error_type:ty, $($more_error_type:ty),+) => {
$crate::downref_report_frame!($frame, $func, $error_type)
$(
.or_else(|| $crate::downref_report_frame!($frame, $func, $more_error_type))
)+
};
}