|
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) |
|
|