+ s3
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user