mirror of
http://88.130.71.182:3000/BlitTech/badoHair_be.git
synced 2026-06-12 23:23:22 +00:00
Initial Commit
This commit is contained in:
58
app/exceptions.py
Normal file
58
app/exceptions.py
Normal 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)
|
||||
Reference in New Issue
Block a user