Skip to content

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:

  • entries
  • activeEntries
  • count
  • add
  • addEmpty
  • remove
  • hardDelete
  • findById
  • updateField
  • updateFieldByKey
  • update
  • bulkUpdate
  • clear
  • restore

Implementierungsdetails:

  • validiert Einträge, wenn ein Validator übergeben wurde
  • setzt clientCreatedAt und clientUpdatedAt
  • 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:

  • where
  • whereIn
  • search
  • sortBy
  • limit
  • get
  • first
  • count

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