| 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 |
| ) |