mirror of
https://github.com/grillazz/fastapi-sqlalchemy-asyncpg.git
synced 2025-11-30 13:20:40 +03:00
add response_validation_exception_handler
This commit is contained in:
@@ -3,6 +3,7 @@ from collections.abc import AsyncGenerator
|
||||
from rotoger import AppStructLogger
|
||||
from sqlalchemy.exc import SQLAlchemyError
|
||||
from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine
|
||||
from fastapi.exceptions import ResponseValidationError
|
||||
|
||||
from app.config import settings as global_settings
|
||||
|
||||
@@ -26,15 +27,14 @@ AsyncSessionFactory = async_sessionmaker(
|
||||
# Dependency
|
||||
async def get_db() -> AsyncGenerator:
|
||||
async with AsyncSessionFactory() as session:
|
||||
# logger.debug(f"ASYNC Pool: {engine.pool.status()}")
|
||||
try:
|
||||
yield session
|
||||
await session.commit()
|
||||
except SQLAlchemyError:
|
||||
# Re-raise SQLAlchemy errors to be handled by the global handler
|
||||
raise
|
||||
except Exception as ex:
|
||||
if isinstance(ex, SQLAlchemyError):
|
||||
# Re-raise SQLAlchemyError directly without handling
|
||||
raise
|
||||
else:
|
||||
# Handle other exceptions
|
||||
await logger.aerror(f"NonSQLAlchemyError: {repr(ex)}")
|
||||
raise # Re-raise after logging
|
||||
# Only log actual database-related issues, not response validation
|
||||
if not isinstance(ex, ResponseValidationError):
|
||||
await logger.aerror(f"Database-related error: {repr(ex)}")
|
||||
raise # Re-raise to be handled by appropriate handlers
|
||||
|
||||
Reference in New Issue
Block a user