Spaces:
Running
Running
File size: 1,099 Bytes
0ddf928 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | from fastapi import FastAPI, Request
from fastapi.exceptions import RequestValidationError
from fastapi.responses import JSONResponse
from app.exceptions.domain import BusinessRuleError, ConflictError, NotFoundError
def register_exception_handlers(app: FastAPI) -> None:
@app.exception_handler(NotFoundError)
async def handle_not_found(_: Request, exc: NotFoundError) -> JSONResponse:
return JSONResponse(status_code=404, content={"detail": str(exc)})
@app.exception_handler(ConflictError)
async def handle_conflict(_: Request, exc: ConflictError) -> JSONResponse:
return JSONResponse(status_code=409, content={"detail": str(exc)})
@app.exception_handler(BusinessRuleError)
async def handle_business_rule(_: Request, exc: BusinessRuleError) -> JSONResponse:
return JSONResponse(status_code=422, content={"detail": str(exc)})
@app.exception_handler(RequestValidationError)
async def handle_validation(_: Request, exc: RequestValidationError) -> JSONResponse:
return JSONResponse(status_code=400, content={"detail": exc.errors()})
|