This commit is contained in:
xds
2026-02-06 14:07:10 +03:00
parent 37e69088a1
commit cdb09e84fc
20 changed files with 470 additions and 30 deletions

View File

@@ -11,6 +11,9 @@ from repos.dao import DAO
from aiogram import Bot
from adapters.s3_adapter import S3Adapter
from typing import Optional
# Провайдеры "сырых" клиентов из состояния приложения
def get_mongo_client(request: Request) -> AsyncIOMotorClient:
return request.app.state.mongo_client
@@ -21,11 +24,17 @@ def get_gemini_client(request: Request) -> GoogleAdapter:
def get_bot_client(request: Request) -> Bot:
return request.app.state.bot
def get_s3_adapter(request: Request) -> Optional[S3Adapter]:
return getattr(request.app.state, "s3_adapter", None)
# Провайдер DAO (собирается из mongo_client)
def get_dao(mongo_client: AsyncIOMotorClient = Depends(get_mongo_client)) -> DAO:
def get_dao(
mongo_client: AsyncIOMotorClient = Depends(get_mongo_client),
s3_adapter: Optional[S3Adapter] = Depends(get_s3_adapter)
) -> DAO:
# FastAPI кэширует результат Depends в рамках одного запроса,
# так что DAO создастся один раз за запрос.
return DAO(mongo_client)
return DAO(mongo_client, s3_adapter)
# Провайдер сервиса (собирается из DAO и Gemini)
def get_generation_service(