from pydantic import BaseModel from typing import Optional, Any from fastapi import HTTPException class ResponseModel(BaseModel): success: bool message: str data: Optional[Any] = None class AppException(HTTPException): def __init__(self, status_code: int = 400, detail: str | ResponseModel = None): if isinstance(detail, ResponseModel): super().__init__(status_code=status_code, detail=detail.message) self.data = detail.data self.response_model = detail else: super().__init__(status_code=status_code, detail=str(detail) if detail else "An error occurred") self.data = None self.response_model = ResponseModel( success=False, message=str(detail) if detail else "An error occurred", data=None )