Add atomic device row updates
This commit is contained in:
@@ -69,9 +69,11 @@ und atomar fortschreiben. Vorwärts- und Rückwärtskommandos besitzen einen
|
||||
versionierten, JSON-sicheren Umschlag; Typ und Payload können dadurch nach
|
||||
einem Neustart verlustfrei rekonstruiert werden. Konkrete Fachkommandos und
|
||||
bestehende Fachoperationen sind aber noch nicht allgemein an diese Grenze
|
||||
angeschlossen. Für Circuit-Feldänderungen existiert ein erster interner
|
||||
Command-Store, der Fachänderung, automatisch erzeugtes inverses Kommando und
|
||||
Revision gemeinsam committen beziehungsweise zurückrollen kann. Er ist noch
|
||||
angeschlossen. Für Circuit- und Gerätezeilen-Feldänderungen existieren interne
|
||||
Command-Stores, die Fachänderung, automatisch erzeugtes inverses Kommando und
|
||||
Revision gemeinsam committen beziehungsweise zurückrollen können.
|
||||
Gerätezeilen-Kommandos bewahren dabei auch lokale ProjectDevice-Overrides und
|
||||
prüfen Projektzugehörigkeit von Verknüpfungen und Räumen. Die Stores sind noch
|
||||
nicht über die API oder das Grid aktiviert; serverseitiges Undo/Redo ist daher
|
||||
noch nicht verfügbar.
|
||||
|
||||
|
||||
@@ -153,14 +153,19 @@ Completed foundation:
|
||||
ownership and equipment-identifier uniqueness inside its transaction
|
||||
- circuit updates derive their inverse from the persisted pre-command row and
|
||||
commit the domain update, inverse command, change set and revision together
|
||||
- an internal `circuit-device-row.update` command applies the same boundary to
|
||||
device fields, validates project-device and room ownership and records
|
||||
automatically derived local override metadata in its normalized forward
|
||||
command
|
||||
- integration tests apply the generated inverse as a new `undo` revision and
|
||||
verify rollback for stale revisions and late history failures
|
||||
verify rollback for stale revisions and late history failures on both update
|
||||
command types
|
||||
|
||||
Remaining constraints before implementing history:
|
||||
|
||||
- extend the concrete project-scoped command union and executors beyond the
|
||||
internal `circuit.update` slice; the generic versioned command envelope is
|
||||
complete
|
||||
internal Circuit and CircuitDeviceRow update slices; the generic versioned
|
||||
command envelope is complete
|
||||
- route domain writes and revision recording through one shared project
|
||||
transaction boundary; the current revision repository only commits history
|
||||
records and the counter together
|
||||
|
||||
@@ -376,6 +376,9 @@ Implemented foundation:
|
||||
persisted pre-command state
|
||||
- circuit update, inverse command, change set and revision share one SQLite
|
||||
transaction with stale-command and late-failure rollback coverage
|
||||
- an internal typed `circuit-device-row.update` command uses the same boundary,
|
||||
records derived ProjectDevice override metadata and rejects cross-project
|
||||
rows, device links and rooms
|
||||
- revision metadata, change-set payloads and the project counter are committed
|
||||
in one SQLite transaction
|
||||
- a stale expected revision produces no history writes
|
||||
|
||||
Reference in New Issue
Block a user