feat: v2 rewrite — hexagonal arch, ActivityPub federation, NATS, deployment-ready #1

Merged
GKaszewski merged 334 commits from v2 into master 2026-05-16 09:42:43 +00:00
2 changed files with 5 additions and 0 deletions
Showing only changes of commit ca35e8e774 - Show all commits

View File

@@ -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}")]

View File

@@ -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())