""" FastAPI dependencies for the marine species identification API. """ from fastapi import HTTPException, status from app.services.model_service import model_service from app.core.logging import get_logger logger = get_logger(__name__) async def get_model_service(): """ Dependency to get the model service. Ensures the model is loaded and available. """ try: await model_service.ensure_model_available() return model_service except Exception as e: logger.error(f"Failed to initialize model service: {str(e)}") raise HTTPException( status_code=status.HTTP_503_SERVICE_UNAVAILABLE, detail=f"Model service unavailable: {str(e)}" ) async def validate_model_health(): """ Dependency to validate model health before processing requests. """ try: health_status = await model_service.health_check() if not health_status.get("model_loaded", False): raise HTTPException( status_code=status.HTTP_503_SERVICE_UNAVAILABLE, detail="Model is not loaded or unhealthy" ) return True except HTTPException: raise except Exception as e: logger.error(f"Model health check failed: {str(e)}") raise HTTPException( status_code=status.HTTP_503_SERVICE_UNAVAILABLE, detail="Model health check failed" )