sync.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. # -*- coding: utf-8 -*-
  2. """
  3. Sync-Befehle fuer die Datensynchronisation zwischen Standalone und Server.
  4. """
  5. from dataclasses import dataclass, field
  6. from trixy_core.network.cmd.base import CommandMessage
  7. @dataclass
  8. class SyncPush(CommandMessage):
  9. """
  10. Push von geaenderten Items. Bidirektional.
  11. Standalone → Server: Lokale Aenderungen senden
  12. Server → Standalone: Server-Aenderungen senden (als Teil von SyncResponse)
  13. """
  14. items: list[dict] = field(default_factory=list)
  15. @dataclass
  16. class SyncRequest(CommandMessage):
  17. """
  18. Anfrage nach Server-Aenderungen. Standalone → Server.
  19. Der Standalone sendet den letzten Sync-Zeitpunkt,
  20. der Server antwortet mit allen Aenderungen seit diesem Zeitpunkt.
  21. """
  22. since: str = ""
  23. @dataclass
  24. class SyncResponse(CommandMessage):
  25. """
  26. Antwort mit Server-Items. Server → Standalone.
  27. Enthaelt alle Items die seit 'since' geaendert wurden
  28. und den Server-Zeitpunkt fuer den naechsten Sync.
  29. """
  30. items: list[dict] = field(default_factory=list)
  31. server_time: str = ""
  32. @dataclass
  33. class SyncAck(CommandMessage):
  34. """
  35. Bestaetigung fuer empfangene Items.
  36. Wird nach erfolgreichem Merge gesendet.
  37. """
  38. accepted_count: int = 0