wip: add exception handler

This commit is contained in:
grillazz 2025-08-23 18:22:51 +02:00
parent 69f3dc3fd8
commit 58553c6d63
4 changed files with 11 additions and 10 deletions

View File

@ -1,8 +1,9 @@
from collections.abc import AsyncGenerator
from rotoger import AppStructLogger
from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine
from sqlalchemy.exc import SQLAlchemyError
from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine
from app.config import settings as global_settings
logger = AppStructLogger().get_logger()

View File

@ -1,13 +1,15 @@
from fastapi import Request
from fastapi.responses import JSONResponse
from sqlalchemy.exc import SQLAlchemyError
import orjson
from fastapi import FastAPI
from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse
from rotoger import AppStructLogger
from sqlalchemy.exc import SQLAlchemyError
logger = AppStructLogger().get_logger()
async def sqlalchemy_exception_handler(request: Request, exc: SQLAlchemyError) -> JSONResponse:
async def sqlalchemy_exception_handler(
request: Request, exc: SQLAlchemyError
) -> JSONResponse:
request_path = request.url.path
try:
raw_body = await request.body()
@ -27,6 +29,7 @@ async def sqlalchemy_exception_handler(request: Request, exc: SQLAlchemyError) -
content={"message": "A database error occurred. Please try again later."},
)
def register_exception_handlers(app: FastAPI) -> None:
"""Register all exception handlers with the FastAPI app."""
app.add_exception_handler(SQLAlchemyError, sqlalchemy_exception_handler)

View File

@ -7,7 +7,6 @@ from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
from rotoger import AppStructLogger
from app.api.health import router as health_router
from app.api.ml import router as ml_router
from app.api.nonsense import router as nonsense_router
@ -15,9 +14,9 @@ from app.api.shakespeare import router as shakespeare_router
from app.api.stuff import router as stuff_router
from app.api.user import router as user_router
from app.config import settings as global_settings
from app.exception_handlers import register_exception_handlers
from app.redis import get_redis
from app.services.auth import AuthBearer
from app.exception_handlers import register_exception_handlers
logger = AppStructLogger().get_logger()
templates = Jinja2Templates(directory=Path(__file__).parent.parent / "templates")

View File

@ -25,7 +25,6 @@ class Base(DeclarativeBase):
await db_session.refresh(self)
return self
async def delete(self, db_session: AsyncSession):
try:
await db_session.delete(self)
@ -58,4 +57,3 @@ class Base(DeclarativeBase):
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=repr(exception),
) from exception