""" Internal API for Inventory Service Handles internal service-to-service operations """ from fastapi import APIRouter, Depends, HTTPException, Header from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy import select, func from uuid import UUID import structlog from app.core.database import get_db from app.core.config import settings from app.models import Ingredient logger = structlog.get_logger() router = APIRouter(prefix="/internal", tags=["internal"]) @router.get("/count") async def get_ingredient_count( tenant_id: str, db: AsyncSession = Depends(get_db) ): """ Get count of active ingredients for onboarding status check. Internal endpoint for tenant service. """ try: count = await db.scalar( select(func.count()).select_from(Ingredient) .where( Ingredient.tenant_id == UUID(tenant_id), Ingredient.is_active == True ) ) return { "count": count or 0, "tenant_id": tenant_id } except Exception as e: logger.error("Failed to get ingredient count", tenant_id=tenant_id, error=str(e)) raise HTTPException(status_code=500, detail=f"Failed to get ingredient count: {str(e)}")