Spaces:
Sleeping
Sleeping
| """ | |
| Global error handling middleware. | |
| """ | |
| from fastapi import Request, status | |
| from fastapi.responses import JSONResponse | |
| from fastapi.exceptions import RequestValidationError | |
| from sqlalchemy.exc import SQLAlchemyError | |
| import logging | |
| logger = logging.getLogger(__name__) | |
| async def validation_exception_handler(request: Request, exc: RequestValidationError): | |
| """Handle validation errors.""" | |
| return JSONResponse( | |
| status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, | |
| content={"detail": exc.errors(), "body": exc.body}, | |
| ) | |
| async def sqlalchemy_exception_handler(request: Request, exc: SQLAlchemyError): | |
| """Handle database errors.""" | |
| logger.error(f"Database error: {str(exc)}") | |
| return JSONResponse( | |
| status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, | |
| content={"detail": "Database error occurred"}, | |
| ) | |
| async def general_exception_handler(request: Request, exc: Exception): | |
| """Handle general exceptions.""" | |
| logger.error(f"Unhandled exception: {str(exc)}") | |
| return JSONResponse( | |
| status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, | |
| content={"detail": "Internal server error"}, | |
| ) | |