""" FastAPI依赖注入 """ from fastapi import Depends, HTTPException, status from sqlalchemy.ext.asyncio import AsyncSession from typing import AsyncGenerator from .database import get_db from .config import settings, api_config async def get_database_session() -> AsyncGenerator[AsyncSession, None]: """获取数据库会话依赖""" async for session in get_db(): yield session def verify_gemini_api_key(): """验证Gemini API密钥""" if not api_config.validate_gemini_config(): raise HTTPException( status_code=status.HTTP_503_SERVICE_UNAVAILABLE, detail="Gemini API未配置或配置无效" ) return api_config.gemini_api_key def verify_tushare_token(): """验证Tushare Token""" if not api_config.validate_tushare_config(): raise HTTPException( status_code=status.HTTP_503_SERVICE_UNAVAILABLE, detail="Tushare API未配置或配置无效" ) return api_config.tushare_token class DatabaseDependency: """数据库依赖类""" def __init__(self): self.session = Depends(get_database_session) class APIKeyDependency: """API密钥依赖类""" def __init__(self): self.gemini_key = Depends(verify_gemini_api_key) self.tushare_token = Depends(verify_tushare_token)