// Schlanke Migrations-Infrastruktur für das LocalStorage-Datenschema. // Aktuell existiert nur Schema-Version 1, daher ist MIGRATIONS leer. // Neue Migrationen werden als { from, to, migrate(data) } ergänzt und // von migrate() sequenziell angewendet. (function () { const { CURRENT_SCHEMA_VERSION } = EventMap.config; const MIGRATIONS = [ // Beispiel für zukünftige Migrationen: // { from: 1, to: 2, migrate: (data) => ({ ...data, neuesFeld: 'default' }) }, ]; /** * Wendet alle nötigen Migrationsschritte an, bis schemaVersion der * aktuellen CURRENT_SCHEMA_VERSION entspricht. */ function migrate(data) { let current = data ?? {}; let version = current.schemaVersion ?? 1; while (version < CURRENT_SCHEMA_VERSION) { const step = MIGRATIONS.find((m) => m.from === version); if (!step) { // Keine passende Migration gefunden: auf aktuelle Version springen, // um die App nicht zu blockieren. break; } current = step.migrate(current); version = step.to; } return { ...current, schemaVersion: CURRENT_SCHEMA_VERSION }; } EventMap.store.migrate = migrate; })();