feat: v2 rewrite — hexagonal arch, ActivityPub federation, NATS, deployment-ready #1
@@ -10,6 +10,8 @@ pub enum DomainError {
|
|||||||
Forbidden,
|
Forbidden,
|
||||||
#[error("conflict: {0}")]
|
#[error("conflict: {0}")]
|
||||||
Conflict(String),
|
Conflict(String),
|
||||||
|
#[error("unique violation on field: {field}")]
|
||||||
|
UniqueViolation { field: &'static str },
|
||||||
#[error("invalid input: {0}")]
|
#[error("invalid input: {0}")]
|
||||||
InvalidInput(String),
|
InvalidInput(String),
|
||||||
#[error("external service error: {0}")]
|
#[error("external service error: {0}")]
|
||||||
|
|||||||
@@ -27,6 +27,9 @@ impl IntoResponse for ApiError {
|
|||||||
}
|
}
|
||||||
Self::Domain(DomainError::Forbidden) => (StatusCode::FORBIDDEN, "forbidden".into()),
|
Self::Domain(DomainError::Forbidden) => (StatusCode::FORBIDDEN, "forbidden".into()),
|
||||||
Self::Domain(DomainError::Conflict(m)) => (StatusCode::CONFLICT, m),
|
Self::Domain(DomainError::Conflict(m)) => (StatusCode::CONFLICT, m),
|
||||||
|
Self::Domain(DomainError::UniqueViolation { field }) => {
|
||||||
|
(StatusCode::CONFLICT, format!("{field} already taken"))
|
||||||
|
}
|
||||||
Self::Domain(DomainError::InvalidInput(m)) => (StatusCode::UNPROCESSABLE_ENTITY, m),
|
Self::Domain(DomainError::InvalidInput(m)) => (StatusCode::UNPROCESSABLE_ENTITY, m),
|
||||||
Self::Domain(DomainError::ExternalService(_)) => {
|
Self::Domain(DomainError::ExternalService(_)) => {
|
||||||
(StatusCode::BAD_GATEWAY, "external service error".into())
|
(StatusCode::BAD_GATEWAY, "external service error".into())
|
||||||
|
|||||||
Reference in New Issue
Block a user