Files
Solo_bot/middlewares/session.py
T

29 lines
759 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)
session = self.sessionmaker()
data["session"] = session
try:
result = await handler(event, data)
await session.commit()
return result
except Exception:
try:
await session.rollback()
except Exception:
pass
raise
finally:
try:
await session.close()
except Exception:
pass