67 lines
1.5 KiB
Python
67 lines
1.5 KiB
Python
"""
|
|
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 |