-- Schema der zentralen Kontroll-Datenbank. -- -- Diese Datei ist bewusst von den Workspace-Dateien getrennt (siehe -- internal/store/migrations) und enthält nur, was gebraucht wird, BEVOR der -- Workspace bekannt ist: die Liste der Workspaces selbst, und den Weg von -- einem Key-Hash zu seinem Workspace. -- -- Alles andere (Projekte, Einträge, Keys im Volltext, Protokoll) lebt in der -- jeweiligen Workspace-Datei — siehe AUSBAUSTUFEN.md 4.4. -- Ein Workspace ist eine Abteilung. Jede hat ihre eigene Datenbankdatei; diese -- Tabelle ist nur das Verzeichnis darüber. CREATE TABLE workspaces ( id TEXT PRIMARY KEY, name TEXT NOT NULL, created_at TEXT NOT NULL ); -- key_index bildet Key-Hash auf Workspace ab — der einzige Grund, warum diese -- Datenbank vor dem Öffnen einer Workspace-Datei befragt werden muss. -- -- Die Zeile hier ist ein Index, keine Wahrheit über den Key selbst: Name, -- Rolle, Projekt und der Zeitpunkt der letzten Nutzung stehen ausschließlich -- in der Workspace-Datei. Wird ein Key dort angelegt oder zurückgezogen, muss -- diese Tabelle im selben Zug nachgezogen werden (siehe ControlStore.IndexKey -- und ControlStore.RemoveKeyIndex). CREATE TABLE key_index ( hash TEXT PRIMARY KEY, workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE, created_at TEXT NOT NULL ); CREATE INDEX idx_key_index_workspace ON key_index (workspace_id);