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