"""Application exceptions and response handler.""" from typing import Any from fastapi import Request from fastapi.responses import JSONResponse class AppException(Exception): def __init__( self, message: str, *, code: int = 400, status_code: int = 400, details: Any = None, ) -> None: super().__init__(message) self.message = message self.code = code self.status_code = status_code self.details = details async def app_exception_handler(_: Request, exc: AppException) -> JSONResponse: return JSONResponse( status_code=exc.status_code, content={"code": exc.code, "message": exc.message, "data": exc.details}, )