first commit

This commit is contained in:
2026-04-04 21:30:35 +07:00
commit d66041fa31
24 changed files with 503 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
from typing import Any, Awaitable, Callable
from aiogram import BaseMiddleware
from aiogram.types import TelegramObject
from sqlalchemy.ext.asyncio import AsyncSession
from app.repositories.user import UserRepository
from app.services.referral_service import ReferralService
from app.services.user_service import UserService
class ServicesMiddleware(BaseMiddleware):
"""Builds application services from the request-scoped session (dependency injection)."""
async def __call__(
self,
handler: Callable[[TelegramObject, dict[str, Any]], Awaitable[Any]],
event: TelegramObject,
data: dict[str, Any],
) -> Any:
session: AsyncSession = data["session"]
users = UserRepository(session)
referrals = ReferralService(users)
data["user_service"] = UserService(users, referrals)
return await handler(event, data)