Initial Commit

This commit is contained in:
belviskhoremk
2026-05-12 00:34:21 +00:00
commit d2dc43b16f
57 changed files with 6056 additions and 0 deletions

58
app/exceptions.py Normal file
View File

@@ -0,0 +1,58 @@
from typing import Any
class AppError(Exception):
def __init__(self, code: str, message: str, status_code: int = 400, details: Any = None):
self.code = code
self.message = message
self.status_code = status_code
self.details = details
super().__init__(message)
class NotFoundError(AppError):
def __init__(self, resource: str, details: Any = None):
code = f"{resource.upper().replace(' ', '_')}_NOT_FOUND"
message = f"{resource.replace('_', ' ').capitalize()} not found"
super().__init__(code=code, message=message, status_code=404, details=details)
class UnauthorizedError(AppError):
def __init__(self, message: str = "Authentication required"):
super().__init__(code="UNAUTHORIZED", message=message, status_code=401)
class ForbiddenError(AppError):
def __init__(self, message: str = "Insufficient permissions"):
super().__init__(code="FORBIDDEN", message=message, status_code=403)
class ConflictError(AppError):
def __init__(self, code: str, message: str, details: Any = None):
super().__init__(code=code, message=message, status_code=409, details=details)
class PaymentError(AppError):
def __init__(self, message: str, details: Any = None):
super().__init__(code="PAYMENT_FAILED", message=message, status_code=402, details=details)
class ValidationError(AppError):
def __init__(self, message: str, details: Any = None):
super().__init__(code="VALIDATION_ERROR", message=message, status_code=422, details=details)
class OutOfStockError(AppError):
def __init__(self, product_name: str = ""):
msg = f"'{product_name}' is out of stock" if product_name else "One or more items are out of stock"
super().__init__(code="OUT_OF_STOCK", message=msg, status_code=409)
class SlotUnavailableError(AppError):
def __init__(self):
super().__init__(code="SLOT_UNAVAILABLE", message="This time slot is no longer available", status_code=409)
class UserBlockedError(AppError):
def __init__(self):
super().__init__(code="USER_BLOCKED", message="Your account has been suspended", status_code=403)