Files
SupervisorAI/api/dependencies.py

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