Initial Commit
This commit is contained in:
5
middlewares/__init__.py
Normal file
5
middlewares/__init__.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from .di import DIMiddleware
|
||||
from .repository import RepositoryMiddleware
|
||||
from .session import DBSessionMiddleware
|
||||
|
||||
__all__ = ["DIMiddleware", "RepositoryMiddleware", "DBSessionMiddleware"]
|
||||
19
middlewares/di.py
Normal file
19
middlewares/di.py
Normal file
@@ -0,0 +1,19 @@
|
||||
from aiogram import BaseMiddleware
|
||||
from typing import Any, Callable
|
||||
|
||||
from services.orders import OrderService
|
||||
|
||||
|
||||
class DIMiddleware(BaseMiddleware):
|
||||
def __init__(self, order_service: OrderService):
|
||||
self._order_service = order_service
|
||||
|
||||
async def __call__(
|
||||
self,
|
||||
handler: Callable,
|
||||
event: Any,
|
||||
data: dict[str, Any],
|
||||
) -> Any:
|
||||
data["order_service"] = self._order_service
|
||||
|
||||
return await handler(event, data)
|
||||
9
middlewares/repository.py
Normal file
9
middlewares/repository.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from aiogram import BaseMiddleware
|
||||
|
||||
from repositories.orders import OrderRepository
|
||||
|
||||
|
||||
class RepositoryMiddleware(BaseMiddleware):
|
||||
async def __call__(self, handler, event, data):
|
||||
data["order_repo"] = OrderRepository()
|
||||
return await handler(event, data)
|
||||
12
middlewares/session.py
Normal file
12
middlewares/session.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from aiogram import BaseMiddleware
|
||||
from sqlalchemy.ext.asyncio import async_sessionmaker
|
||||
|
||||
|
||||
class DBSessionMiddleware(BaseMiddleware):
|
||||
def __init__(self, session_factory: async_sessionmaker):
|
||||
self.session_factory = session_factory
|
||||
|
||||
async def __call__(self, handler, event, data):
|
||||
async with self.session_factory() as session:
|
||||
data["session"] = session
|
||||
return await handler(event, data)
|
||||
Reference in New Issue
Block a user