# -*- coding: utf-8 -*- """ Sync-Befehle fuer die Datensynchronisation zwischen Standalone und Server. """ from dataclasses import dataclass, field from trixy_core.network.cmd.base import CommandMessage @dataclass class SyncPush(CommandMessage): """ Push von geaenderten Items. Bidirektional. Standalone → Server: Lokale Aenderungen senden Server → Standalone: Server-Aenderungen senden (als Teil von SyncResponse) """ items: list[dict] = field(default_factory=list) @dataclass class SyncRequest(CommandMessage): """ Anfrage nach Server-Aenderungen. Standalone → Server. Der Standalone sendet den letzten Sync-Zeitpunkt, der Server antwortet mit allen Aenderungen seit diesem Zeitpunkt. """ since: str = "" @dataclass class SyncResponse(CommandMessage): """ Antwort mit Server-Items. Server → Standalone. Enthaelt alle Items die seit 'since' geaendert wurden und den Server-Zeitpunkt fuer den naechsten Sync. """ items: list[dict] = field(default_factory=list) server_time: str = "" @dataclass class SyncAck(CommandMessage): """ Bestaetigung fuer empfangene Items. Wird nach erfolgreichem Merge gesendet. """ accepted_count: int = 0