from fastapi import APIRouter, Depends from pydantic import BaseModel from sqlmodel import Session from app.auth import get_current_user from app.db import get_session from app.services.sync_status import compute_sync_status router = APIRouter(prefix="/sync-status", tags=["sync-status"]) class SyncSourceStatus(BaseModel): key: str label: str description: str last_received: str | None age_days: float | None warn_after_days: float status: str # 'ok' | 'warning' | 'never' class SyncStatusResponse(BaseModel): sources: list[SyncSourceStatus] warnings: int @router.get("/", response_model=SyncStatusResponse) def sync_status( session: Session = Depends(get_session), _user: str = Depends(get_current_user), ): sources = compute_sync_status(session) return { "sources": sources, "warnings": sum(1 for s in sources if s["status"] in ("warning", "never")), }