Guest User

simple aiogram middleware for passing db sessions

a guest
Jun 24th, 2023
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.72 KB | None | 0 0
  1. from typing import Callable, Dict, Any, Awaitable
  2.  
  3. from aiogram import BaseMiddleware
  4. from aiogram.types import TelegramObject
  5. from sqlalchemy.ext.asyncio import async_sessionmaker
  6.  
  7. from bot.db.requests import Database # your class with database queries
  8.  
  9.  
  10. class DbMiddleware(BaseMiddleware):
  11. def __init__(self, session_factory: async_sessionmaker):
  12. self.factory = session_factory
  13.  
  14. async def __call__(
  15. self,
  16. handler: Callable[[TelegramObject, Dict[str, Any]], Awaitable[Any]],
  17. event: TelegramObject,
  18. data: Dict[str, Any],
  19. ) -> Any:
  20. async with self.factory() as session:
  21. data['db'] = Database(session)
  22. return await handler(event, data)
Advertisement
Add Comment
Please, Sign In to add comment