Zum Inhalt springen

Optimistic Locking

Backend (haben wir)

Jede Entity hat eine version Column. Bei Update: WHERE version = expectedVersion. Wenn sich die Version geaendert hat → ConflictError("version_conflict").

UI Default: Error-Toast + Reload

Framework handled den version_conflict Error automatisch im UI:

┌──────────────────────────────────────────┐
│ ⚠ Dieser Datensatz wurde in der │
│ Zwischenzeit geändert. │
│ │
│ [Neu laden] [Verwerfen] │
└──────────────────────────────────────────┘

Das reicht fuer 90% der Faelle. Kein Code vom Entwickler noetig — das Framework erkennt den Error-Typ und zeigt den Dialog.

Spaeter moeglich: Diff + Merge

Features koennen den Default ueberschreiben und einen eigenen Conflict-Handler registrieren:

r.screen({
id: "orderEdit",
type: "entityEdit",
onConflict: "diff", // Zeigt Aenderungen an statt nur Toast
});

Das ist aber Zukunft — der Default (Toast + Reload) ist erstmal genug.

Was der Entwickler tut

Nichts. version wird automatisch bei jedem Update hochgezaehlt, Conflict Detection passiert im Framework, UI zeigt den Dialog.