mirror of
http://88.130.71.182:3000/BlitTech/badoHair_be.git
synced 2026-06-12 23:23:22 +00:00
59 lines
2.1 KiB
Python
59 lines
2.1 KiB
Python
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)
|