use rocket::{http::Status, response, response::Responder, Request}; use rocket_okapi::response::OpenApiResponderInner; use schemars::JsonSchema; use thiserror::Error; /// # Ordering /// /// Ordering of data in an array, ascending or descending #[derive(Clone, Debug, FromFormField, JsonSchema)] #[serde(rename_all = "snake_case")] pub enum Ordering { #[field(value = "desc")] Desc, #[field(value = "asc")] Asc, } impl ToString for Ordering { fn to_string(&self) -> String { match self { Self::Desc => "DESC", Self::Asc => "ASC", } .into() } } #[derive(Error, Debug)] pub enum PartyError { #[error("user `{0}` does not exist")] UserNotFound(i64), #[error("unknown error: {0}")] Unknown(String), #[error("invalid parameter: {0}")] InvalidParameter(String), #[error("uuid error {source:?}")] UuidError { #[from] source: uuid::Error, }, #[error("sqlx error {source:?}")] SqlxError { #[from] source: sqlx::Error, }, } impl OpenApiResponderInner for PartyError { fn responses( _gen: &mut rocket_okapi::gen::OpenApiGenerator, ) -> rocket_okapi::Result { Ok(okapi::openapi3::Responses::default()) } } impl<'r, 'o: 'r> Responder<'r, 'o> for PartyError { fn respond_to(self, req: &'r Request<'_>) -> response::Result<'o> { match self { Self::UserNotFound(_) => Status::NotFound, _ => Status::InternalServerError, } .respond_to(req) } }