19 lines
538 B
Python
19 lines
538 B
Python
from aiogram import BaseMiddleware
|
|
|
|
|
|
class SessionMiddleware(BaseMiddleware):
|
|
def __init__(self, sessionmaker):
|
|
self.sessionmaker = sessionmaker
|
|
|
|
async def __call__(self, handler, event, data):
|
|
if data.get("session"):
|
|
return await handler(event, data)
|
|
|
|
async with self.sessionmaker() as session:
|
|
data["session"] = session
|
|
try:
|
|
return await handler(event, data)
|
|
except Exception:
|
|
await session.rollback()
|
|
raise
|