Hinweis 03-2: Repository mit localStorage

Stufe 1 zuerst lesen, dann selbst probieren. Die nächste Stufe erst, wenn du nach zwei Versuchen feststeckst.

Stufe 1: Denkfrage

localStorage kann nur Text speichern, keine Objekte. Wie wird aus einem Array von Leads ein Text und zurück? Und: Wenn zwei Firmen dieselbe App im selben Browser nutzen, wie hältst du ihre Daten auseinander?

Stufe 2: Teilbeispiel

function storageKey(workspaceId: string): string {
  return `lead-cockpit:${workspaceId}:leads`;
}

function readAll(storage: Storage, workspaceId: string): readonly Lead[] {
  const raw = storage.getItem(storageKey(workspaceId));
  return raw === null ? [] : (JSON.parse(raw) as Lead[]);
}

function writeAll(storage: Storage, workspaceId: string, leads: readonly Lead[]): void {
  storage.setItem(storageKey(workspaceId), JSON.stringify(leads));
}

Stufe 3: Konkrete Erklärung

Mit readAll und writeAll sind die vier Methoden je zwei bis drei Zeilen:

Schau dir createInMemoryRepository im selben File an: Es ist dieselbe Logik, nur mit einer Variablen statt storage. Wenn JSON.parse bei kaputtem Inhalt wirft, fang es mit try ab und gib [] zurück; das ist robuster, aber kein Test verlangt es.

Zurück zu Mission 3: Daten und Regeln beherrschen