""" 依赖注入模块 提供 FastAPI 依赖注入函数,用于获取服务和适配器实例 """ from functools import lru_cache from typing import Generator from ..services.task_service import TaskService from ..services.experiment_service import ExperimentService from ..services.file_service import FileService # ============================================================ # 服务依赖 # ============================================================ @lru_cache() def get_task_service() -> TaskService: """ 获取 TaskService 实例 使用 lru_cache 确保单例 Returns: TaskService 实例 Example: >>> @router.post("/tasks") ... async def create_task( ... request: QuickModeRequest, ... service: TaskService = Depends(get_task_service) ... ): ... return await service.create_quick_task(request) """ return TaskService() @lru_cache() def get_experiment_service() -> ExperimentService: """ 获取 ExperimentService 实例 Returns: ExperimentService 实例 """ return ExperimentService() @lru_cache() def get_file_service() -> FileService: """ 获取 FileService 实例 Returns: FileService 实例 """ return FileService() # ============================================================ # 通用依赖 # ============================================================ async def get_pagination_params( limit: int = 50, offset: int = 0 ) -> dict: """ 分页参数依赖 Args: limit: 每页数量,默认 50,最大 100 offset: 偏移量,默认 0 Returns: 分页参数字典 """ # 限制最大值 if limit > 100: limit = 100 if limit < 1: limit = 1 if offset < 0: offset = 0 return {"limit": limit, "offset": offset} __all__ = [ "get_task_service", "get_experiment_service", "get_file_service", "get_pagination_params", ]