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 collections.abc import AsyncGenerator
from rotoger import AppStructLogger from rotoger import AppStructLogger
from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine
from sqlalchemy.exc import SQLAlchemyError from sqlalchemy.exc import SQLAlchemyError
from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine
from app.config import settings as global_settings from app.config import settings as global_settings
logger = AppStructLogger().get_logger() 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 import orjson
from fastapi import FastAPI from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse
from rotoger import AppStructLogger from rotoger import AppStructLogger
from sqlalchemy.exc import SQLAlchemyError
logger = AppStructLogger().get_logger() 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 request_path = request.url.path
try: try:
raw_body = await request.body() 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."}, content={"message": "A database error occurred. Please try again later."},
) )
def register_exception_handlers(app: FastAPI) -> None: def register_exception_handlers(app: FastAPI) -> None:
"""Register all exception handlers with the FastAPI app.""" """Register all exception handlers with the FastAPI app."""
app.add_exception_handler(SQLAlchemyError, sqlalchemy_exception_handler) 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 fastapi.templating import Jinja2Templates
from rotoger import AppStructLogger from rotoger import AppStructLogger
from app.api.health import router as health_router from app.api.health import router as health_router
from app.api.ml import router as ml_router from app.api.ml import router as ml_router
from app.api.nonsense import router as nonsense_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.stuff import router as stuff_router
from app.api.user import router as user_router from app.api.user import router as user_router
from app.config import settings as global_settings from app.config import settings as global_settings
from app.exception_handlers import register_exception_handlers
from app.redis import get_redis from app.redis import get_redis
from app.services.auth import AuthBearer from app.services.auth import AuthBearer
from app.exception_handlers import register_exception_handlers
logger = AppStructLogger().get_logger() logger = AppStructLogger().get_logger()
templates = Jinja2Templates(directory=Path(__file__).parent.parent / "templates") templates = Jinja2Templates(directory=Path(__file__).parent.parent / "templates")

View File

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