from fastapi import APIRouter, Depends, Query from sqlalchemy.ext.asyncio import AsyncSession from app.auth.dependencies import get_current_user from app.database import get_session from app.models.user import User from app.schemas.dashboard import DashboardResponse from app.services import dashboard_service from app.utils import utcnow router = APIRouter(prefix="/dashboard", tags=["dashboard"]) def _current_month() -> str: now = utcnow() return f"{now.year}-{now.month:02d}" @router.get("", response_model=DashboardResponse) async def get_dashboard( month: str = Query(default=None, description="Month YYYY-MM (defaults to current month)"), session: AsyncSession = Depends(get_session), current_user: User = Depends(get_current_user), ) -> DashboardResponse: if month is None: month = _current_month() return await dashboard_service.get_dashboard(session, current_user.id, month)