Umsetzung der Ausbaustufen 2.1, 3.6, 3.8, 3.9, 4.1, 4.2, 4.4, 4.6, 5.1–5.4 (Details in AUSBAUSTUFEN.md). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
33 lines
1.4 KiB
SQL
33 lines
1.4 KiB
SQL
-- 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);
|