Files
F-r-ldraledigplannerare/backend/app/utils/errors.py
T
2026-06-01 16:48:21 +02:00

46 lines
1.3 KiB
Python

"""Domain error types.
Use these instead of bare exceptions so services/routers can map them to
meaningful HTTP responses. Never swallow errors silently (see ARCHITECTURE.md §10).
"""
class DomainError(Exception):
"""Base class for all application-domain errors."""
class NotFoundError(DomainError):
"""Raised when an entity cannot be found by its identifier."""
class ValidationError(DomainError):
"""Raised when input fails a business rule (not just schema validation)."""
class InsufficientDaysError(DomainError):
"""Raised when a parent doesn't have enough remaining days to plan."""
class InvalidDayTypeError(ValidationError):
"""Raised when a planned-day type is not recognized."""
class DubbeldagError(ValidationError):
"""Raised when a dubbeldag breaks the 15-month window or the 60-day quota."""
class AuthError(DomainError):
"""Raised when credentials are invalid or an auth operation fails."""
class UnauthorizedError(DomainError):
"""Raised when the caller lacks permission to perform an action."""
class ConflictError(DomainError):
"""Raised when a resource already exists (e.g. duplicate email on register)."""
class InvitationError(ValidationError):
"""Raised when an invitation token is invalid, expired, or already redeemed."""