""" FastAPI依赖注入模块 """ from typing import Generator, Optional from fastapi import Depends, HTTPException, status from sqlalchemy.orm import Session from database.connection import db_manager, get_db from repositories.face_feature_repository import FaceFeatureRepository from services.face_feature_service import FaceFeatureService def get_face_feature_repository( db: Session = Depends(get_db) ) -> FaceFeatureRepository: """ 获取人脸特征仓库依赖 Args: db: 数据库会话 Returns: FaceFeatureRepository实例 """ return FaceFeatureRepository(db) def get_face_feature_service( repository: FaceFeatureRepository = Depends(get_face_feature_repository) ) -> FaceFeatureService: """ 获取人脸特征服务依赖 Args: repository: 人脸特征仓库 Returns: FaceFeatureService实例 """ return FaceFeatureService(repository) def get_face_feature_by_id( feature_id: int, service: FaceFeatureService = Depends(get_face_feature_service) ): """ 根据ID获取人脸特征记录的依赖 Args: feature_id: 特征记录ID service: 人脸特征服务 Returns: 人脸特征记录 Raises: HTTPException: 如果记录不存在 """ feature = service.get_feature(feature_id) if not feature: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail=f"特征记录不存在 (ID: {feature_id})" ) return feature