"""Operational metrics endpoints — MTTD, MTTR, Detection Efficacy, and more.

Provides operational KPIs for security teams with trend analysis
and team-level breakdowns.
"""

from fastapi import APIRouter, Depends, Query
from sqlalchemy.orm import Session

from app.database import get_db
from app.dependencies.auth import get_current_user
from app.models.user import User
from app.services.operational_metrics_service import (
    get_all_operational_metrics,
    get_operational_trend,
    get_metrics_by_team,
)

router = APIRouter(prefix="/metrics/operational", tags=["operational-metrics"])


# ── GET /metrics/operational ──────────────────────────────────────────


@router.get("")
def operational_metrics(
    db: Session = Depends(get_db),
    current_user: User = Depends(get_current_user),
):
    """Get all operational metrics (MTTD, MTTR, etc.) — cached for 5 min."""
    from app.services.score_cache import get_operational_metrics_cached

    return get_operational_metrics_cached(db)


# ── GET /metrics/operational/trend ────────────────────────────────────


@router.get("/trend")
def operational_trend(
    period: str = Query("90d", pattern="^(30d|90d|1y)$"),
    db: Session = Depends(get_db),
    current_user: User = Depends(get_current_user),
):
    """Get weekly trend data for operational metrics."""
    return get_operational_trend(db, period)


# ── GET /metrics/operational/by-team ──────────────────────────────────


@router.get("/by-team")
def metrics_by_team(
    db: Session = Depends(get_db),
    current_user: User = Depends(get_current_user),
):
    """Get metrics broken down by Red Team vs Blue Team."""
    return get_metrics_by_team(db)
