Appearance
Datenbank-Architektur
Die Anwendung speichert Acceptance-Daten lokal über Dexie in IndexedDB. Persistierte Entities werden einmal in der Schema-Registry definiert und anschließend für Dexie-Tabellen, Helper und Store-Wiring wiederverwendet.
Quelle der Wahrheit
Die Quelle der Wahrheit für persistierte Entities ist:
app/schemas/*.tsapp/schemas/entities.ts
Jede Entity-Definition enthält:
- Schema
- Factory für leere Einträge
- Tabellenname
- Dexie-Schema-Generierung
Entity-Registry
app/schemas/entities.ts exports ENTITIES, which currently registers:
meterkeyroomcontractPartnerbank_detailsother_remarksobject_equipmentsignatureroomDetailbuildingModificationtenant_confirmationtermination_reason
Die Registry wird verwendet, um:
- die Dexie-Tabellenkonfiguration abzuleiten
- Store-IDs zu erkennen, die vom Dexie-Sync-Plugin behandelt werden
- Entity-Helper zu erzeugen
Strukturdiagramm
Dexie-Datenbank
app/db/index.ts definiert AcceptanceDB mit dem Datenbanknamen acceptance-db.
Aktuelle Version: 30
Tabellen:
acceptances- one table per entity in
ENTITIES dirtyFlagsimagespdfUploadspdfChunkssetups
Der ready-Hook der DB prüft, ob jede Entity-Tabelle aus der Registry existiert. Fehlende Tabellen erzeugen eine Runtime-Fehlermeldung mit Verweis auf app/db/index.ts.
Speicherung der Root-Acceptance
Der Header-Datensatz der Acceptance wird getrennt von den Entity-Collections gespeichert.
toAcceptanceDB()entfernt eingebettete Child-Collections vor dem Persistieren der Root-AcceptancesaveAcceptanceEntities()speichert Child-Collections mitacceptanceIdhydrateAcceptance()lädt den Root-Datensatz und setzt alle Child-Collections über die Entity-Helper wieder zusammen
Dadurch bleibt das Dexie-Layout an den Entity-Stores ausgerichtet, während die Anwendung trotzdem mit einer vollständig hydratisierten Acceptance arbeiten kann.
Helper-Ebenen
app/db/index.ts exports several helper groups:
allHelpers: generated entity helpersimageHelpers: image-table helperspdfUploadHelpers: chunked PDF upload helperssetupHelpers: setup cache helpersdirtyHelpers: dirty-flag helpersacceptanceHelpers: acceptance-level CRUD and export helpers
Setup-Cache
Die Tabelle setups ist ein Key-Value-Store für das letzte Setup-Payload.
- feste Record-ID:
global - Speicherung zusammen mit
updatedAt - wird von
useSetupStore()als Offline-Fallback genutzt
Bereinigungsoperationen
app/db/index.ts definiert außerdem app-weite Bereinigungshelfer.
clearAllData(): leert Acceptances, Entity-Tabellen, Dirty-Flags, Bilder, PDF-Upload-Tabellen und den Setup-CachedeleteDatabase(): entfernt die komplette Dexie-DatenbankclearAcceptanceData(acceptanceId): leert Entity-Zeilen, Dirty-Flags und Bilder für eine einzelne Acceptance