Spaces:
Running
Running
File size: 1,255 Bytes
cccf200 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | """
Sync API endpoint for offline change synchronization.
"""
from fastapi import APIRouter, Depends, status
from sqlmodel import Session
from src.db.session import get_session
from src.models.sync_operation import SyncRequest, SyncResponse
from src.models.user import User
from src.services.sync_service import SyncService
from src.middleware.auth import get_current_user
router = APIRouter(prefix="/sync", tags=["sync"])
@router.post("/", response_model=SyncResponse)
def sync_offline_changes(
sync_request: SyncRequest,
session: Session = Depends(get_session),
current_user: User = Depends(get_current_user)
):
"""
Synchronize offline changes from client to server.
Args:
sync_request: Sync request containing pending operations
session: Database session
current_user: Authenticated user
Returns:
SyncResponse: Sync results with conflicts and server updates
"""
result = SyncService.sync_operations(
session,
current_user.id,
sync_request.operations
)
return SyncResponse(
success=result["success"],
synced_count=result["synced_count"],
conflicts=result["conflicts"],
server_updates=result["server_updates"]
)
|