Appearance
Store-Factory
app/utils/storeFactory.ts enthält die gemeinsamen Primitive, die von den meisten Entity-Stores genutzt werden.
createBaseStoreSetup(...)
Diese Funktion erzeugt gemeinsamen Store-Zustand und CRUD-Verhalten.
Bereitgestellte Fähigkeiten:
entriesactiveEntriescountaddaddEmptyremovehardDeletefindByIdupdateFieldupdateFieldByKeyupdatebulkUpdateclearrestore
Implementierungsdetails:
- validiert Einträge, wenn ein Validator übergeben wurde
- setzt
clientCreatedAtundclientUpdatedAt - löscht Datensätze weich, wenn sie bereits auf dem Server existierten
- löscht Datensätze hart, wenn sie nie remote persistiert wurden
createEntityStore(...)
Kapselt createBaseStoreSetup(...) mit defineStore(...) und akzeptiert optionale Store-Definitionen, inklusive Optionen für das Dexie-Plugin.
createStandardEmpty(...)
Erzeugt eine wiederverwendbare Factory für leere Entities.
Verhalten:
- erzeugt eine UUID mit
crypto.randomUUID() - setzt Client-Timestamps
- merged sektionsspezifische Defaults ein
query(...)
Stellt einen leichtgewichtigen In-Memory-Query-Helfer für Arrays bereit.
Unterstützte Operationen:
wherewhereInsearchsortBylimitgetfirstcount
Aktuelles Nutzungsmuster
Viele Stores verwenden die Factory ueber zentrale Standarddefinitionen, waehrend einige das Basisverhalten um sektionsspezifische Methoden erweitern.
Der aktuelle Standardpfad fuer triviale Entity-Stores ist:
- Definition in
app/stores/entityStores.ts - optionaler expliziter Wrapper-Export ueber
app/stores/<entity>.ts - Aufnahme in die gemeinsame Standard-Store-Registry statt eigener manueller Registry-Verdrahtung pro Wrapper-Datei
Beispiele:
- Standard-Entity-Store-Muster:
room,contractPartner,signature,roomDetail,bank_details,other_remarks,buildingModification - erweitertes Base-Store-Muster:
meter,key,object_equipment,tenant_confirmation,termination_reason