# tracklight_server/api/sync.py from fastapi import APIRouter, Depends, HTTPException from pydantic import BaseModel from ..hf import push, pull from .auth import verify_token router = APIRouter() class SyncRequest(BaseModel): repo_id: str hf_token: str @router.post("/sync/push") async def sync_push(request: SyncRequest, token: str = Depends(verify_token)): """ Pushes local data to a Hugging Face Dataset repo. """ try: push.push_to_hub(request.repo_id, request.hf_token) return {"message": "Data push initiated."} except Exception as e: raise HTTPException(status_code=500, detail=str(e)) @router.post("/sync/pull") async def sync_pull(request: SyncRequest, token: str = Depends(verify_token)): """ Pulls data from a Hugging Face Dataset repo. """ try: pull.pull_from_hub(request.repo_id, request.hf_token) return {"message": "Data pull initiated."} except Exception as e: raise HTTPException(status_code=500, detail=str(e))