+ api
This commit is contained in:
30
api/dependency.py
Normal file
30
api/dependency.py
Normal file
@@ -0,0 +1,30 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user