29 lines
689 B
Python
29 lines
689 B
Python
from typing import Callable
|
|
|
|
from starlette.requests import Request
|
|
from starlette.responses import Response
|
|
|
|
from pillar_tool.db.database import get_connection
|
|
|
|
async def db_connection_middleware(request: Request, call_next: Callable) -> Response:
|
|
session = get_connection()
|
|
print("test 1")
|
|
|
|
request.state.db = session
|
|
try:
|
|
response: Response = await call_next(request)
|
|
if 200 <= response.status_code <= 299:
|
|
session.commit()
|
|
session.close()
|
|
else:
|
|
session.rollback()
|
|
session.close()
|
|
except Exception as e:
|
|
session.rollback()
|
|
session.close()
|
|
raise e
|
|
|
|
return response
|
|
|
|
|