"""Composition root - dependency injection for FastAPI."""
from collections.abc import AsyncGenerator

from fastapi import Depends
from redis import asyncio as aioredis
from sqlalchemy.ext.asyncio import AsyncSession

from src.core.database import get_db
from src.core.redis import get_redis


async def get_db_session() -> AsyncGenerator[AsyncSession, None]:
    """Get database session (alias for get_db)."""
    async for session in get_db():
        yield session


async def get_redis_client() -> AsyncGenerator[aioredis.Redis, None]:
    """Get Redis client."""
    async for client in get_redis():
        yield client
