from fastapi import APIRouter, Depends, HTTPException
import structlog

from .models.requests import AnalyticsLogRequest
from ...shared.middleware.auth import verify_ai_analytics_auth

router = APIRouter(prefix="/ai-analytics", tags=["ai_analytics"])
logger = structlog.get_logger("ai_analytics.routes")

ai_analytics_service = None


def set_ai_analytics_service(service):
    """Set the ai analytics service instance."""
    global ai_analytics_service
    ai_analytics_service = service


@router.post("/log", dependencies=[Depends(verify_ai_analytics_auth)])
async def log_ai_analytics(request: AnalyticsLogRequest):
    if ai_analytics_service is None:
        raise HTTPException(status_code=503, detail="AI analytics service not initialized")

    logger.info(
        "ai_analytics_log_request",
        city=request.city,
        zavedenia_id=request.zavedenia_id,
        provider=request.service,
        model=request.model,
    )

    await ai_analytics_service.log_usage(
        city=request.city,
        zavedenia_id=request.zavedenia_id,
        service=request.service,
        model=request.model,
        tokens_input=request.tokens_input.model_dump(),
        tokens_output=request.tokens_output.model_dump(),
        data_input=request.data_input,
        data_output=request.data_output,
        execution_time=request.execution_time,
    )

    return {"status": "ok"}
