# dependency.py from fastapi import Request, Depends from motor.motor_asyncio import AsyncIOMotorClient from adapters.google_adapter import GoogleAdapter from api.service.generation_service import GenerationService from repos.dao import DAO # ... ваши импорты ... # Провайдеры "сырых" клиентов из состояния приложения def get_mongo_client(request: Request) -> AsyncIOMotorClient: return request.app.state.mongo_client def get_gemini_client(request: Request) -> GoogleAdapter: return request.app.state.gemini_client # Провайдер DAO (собирается из mongo_client) def get_dao(mongo_client: AsyncIOMotorClient = Depends(get_mongo_client)) -> DAO: # FastAPI кэширует результат Depends в рамках одного запроса, # так что DAO создастся один раз за запрос. return DAO(mongo_client) # Провайдер сервиса (собирается из DAO и Gemini) def get_generation_service( dao: DAO = Depends(get_dao), gemini: GoogleAdapter = Depends(get_gemini_client) ) -> GenerationService: return GenerationService(dao, gemini)