mirror of
https://github.com/grillazz/fastapi-sqlalchemy-asyncpg.git
synced 2025-08-26 16:40:40 +03:00
wip: add exception handler
This commit is contained in:
parent
69f3dc3fd8
commit
58553c6d63
@ -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()
|
||||
|
@ -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)
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user