"""
Statistics Endpoints for Mitai Jinkendo

Dashboard statistics showing entry counts across all categories.
"""
from typing import Optional

from fastapi import APIRouter, Header, Depends

from db import get_db, get_cursor
from auth import require_auth
from routers.profiles import get_pid

router = APIRouter(prefix="/api", tags=["stats"])


@router.get("/stats")
def get_stats(x_profile_id: Optional[str]=Header(default=None), session: dict=Depends(require_auth)):
    """Get entry counts for all tracking categories."""
    pid = get_pid(x_profile_id)
    with get_db() as conn:
        cur = get_cursor(conn)
        cur.execute("SELECT COUNT(*) as count FROM weight_log WHERE profile_id=%s",(pid,))
        weight_count = cur.fetchone()['count']
        cur.execute("SELECT COUNT(*) as count FROM circumference_log WHERE profile_id=%s",(pid,))
        circ_count = cur.fetchone()['count']
        cur.execute("SELECT COUNT(*) as count FROM caliper_log WHERE profile_id=%s",(pid,))
        caliper_count = cur.fetchone()['count']
        cur.execute("SELECT COUNT(*) as count FROM nutrition_log WHERE profile_id=%s",(pid,))
        nutrition_count = cur.fetchone()['count']
        cur.execute("SELECT COUNT(*) as count FROM activity_log WHERE profile_id=%s",(pid,))
        activity_count = cur.fetchone()['count']
        return {
            "weight_count": weight_count,
            "circ_count": circ_count,
            "caliper_count": caliper_count,
            "nutrition_count": nutrition_count,
            "activity_count": activity_count
        }
