| from __future__ import annotations | |
| from typing import TYPE_CHECKING, Any | |
| from aiogram import BaseMiddleware | |
| from bot.database.database import sessionmaker | |
| if TYPE_CHECKING: | |
| from collections.abc import Awaitable, Callable | |
| from aiogram.types import TelegramObject | |
| class DatabaseMiddleware(BaseMiddleware): | |
| async def __call__( | |
| self, | |
| handler: Callable[[TelegramObject, dict[str, Any]], Awaitable[Any]], | |
| event: TelegramObject, | |
| data: dict[str, Any], | |
| ) -> Any: | |
| async with sessionmaker() as session: | |
| data["session"] = session | |
| return await handler(event, data) | |