generated from coulomb/repo-seed
212 lines
9.1 KiB
SQL
212 lines
9.1 KiB
SQL
CREATE TABLE IF NOT EXISTS repositories (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL,
|
|
url TEXT NOT NULL UNIQUE,
|
|
description TEXT,
|
|
branch TEXT NOT NULL DEFAULT 'main',
|
|
status TEXT NOT NULL DEFAULT 'registered',
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS repository_snapshots (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
repository_id INTEGER NOT NULL REFERENCES repositories(id) ON DELETE CASCADE,
|
|
commit_hash TEXT NOT NULL,
|
|
branch TEXT NOT NULL,
|
|
source_path TEXT NOT NULL,
|
|
file_count INTEGER NOT NULL DEFAULT 0,
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS analysis_runs (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
repository_id INTEGER NOT NULL REFERENCES repositories(id) ON DELETE CASCADE,
|
|
snapshot_id INTEGER REFERENCES repository_snapshots(id) ON DELETE SET NULL,
|
|
status TEXT NOT NULL,
|
|
started_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
completed_at TEXT,
|
|
error_message TEXT,
|
|
scanner_version TEXT NOT NULL DEFAULT 'deterministic-v0.1'
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS observed_facts (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
repository_id INTEGER NOT NULL REFERENCES repositories(id) ON DELETE CASCADE,
|
|
analysis_run_id INTEGER NOT NULL REFERENCES analysis_runs(id) ON DELETE CASCADE,
|
|
snapshot_id INTEGER REFERENCES repository_snapshots(id) ON DELETE CASCADE,
|
|
kind TEXT NOT NULL,
|
|
path TEXT NOT NULL DEFAULT '',
|
|
name TEXT NOT NULL,
|
|
value TEXT NOT NULL DEFAULT '',
|
|
metadata TEXT NOT NULL DEFAULT '{}',
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS content_chunks (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
repository_id INTEGER NOT NULL REFERENCES repositories(id) ON DELETE CASCADE,
|
|
analysis_run_id INTEGER NOT NULL REFERENCES analysis_runs(id) ON DELETE CASCADE,
|
|
snapshot_id INTEGER REFERENCES repository_snapshots(id) ON DELETE CASCADE,
|
|
path TEXT NOT NULL,
|
|
kind TEXT NOT NULL,
|
|
start_line INTEGER NOT NULL,
|
|
end_line INTEGER NOT NULL,
|
|
text TEXT NOT NULL,
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS candidate_abilities (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
repository_id INTEGER NOT NULL REFERENCES repositories(id) ON DELETE CASCADE,
|
|
analysis_run_id INTEGER NOT NULL REFERENCES analysis_runs(id) ON DELETE CASCADE,
|
|
name TEXT NOT NULL,
|
|
description TEXT NOT NULL DEFAULT '',
|
|
primary_class TEXT NOT NULL DEFAULT 'ability',
|
|
attributes TEXT NOT NULL DEFAULT '[]',
|
|
confidence REAL NOT NULL DEFAULT 0.0,
|
|
status TEXT NOT NULL DEFAULT 'candidate',
|
|
source_refs TEXT NOT NULL DEFAULT '[]',
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS candidate_capabilities (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
repository_id INTEGER NOT NULL REFERENCES repositories(id) ON DELETE CASCADE,
|
|
analysis_run_id INTEGER NOT NULL REFERENCES analysis_runs(id) ON DELETE CASCADE,
|
|
ability_id INTEGER NOT NULL REFERENCES candidate_abilities(id) ON DELETE CASCADE,
|
|
name TEXT NOT NULL,
|
|
description TEXT NOT NULL DEFAULT '',
|
|
inputs TEXT NOT NULL DEFAULT '[]',
|
|
outputs TEXT NOT NULL DEFAULT '[]',
|
|
primary_class TEXT NOT NULL DEFAULT 'capability',
|
|
attributes TEXT NOT NULL DEFAULT '[]',
|
|
confidence REAL NOT NULL DEFAULT 0.0,
|
|
status TEXT NOT NULL DEFAULT 'candidate',
|
|
source_refs TEXT NOT NULL DEFAULT '[]',
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS candidate_features (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
repository_id INTEGER NOT NULL REFERENCES repositories(id) ON DELETE CASCADE,
|
|
analysis_run_id INTEGER NOT NULL REFERENCES analysis_runs(id) ON DELETE CASCADE,
|
|
capability_id INTEGER NOT NULL REFERENCES candidate_capabilities(id) ON DELETE CASCADE,
|
|
name TEXT NOT NULL,
|
|
type TEXT NOT NULL,
|
|
primary_class TEXT NOT NULL DEFAULT '',
|
|
attributes TEXT NOT NULL DEFAULT '[]',
|
|
location TEXT NOT NULL DEFAULT '',
|
|
confidence REAL NOT NULL DEFAULT 0.0,
|
|
status TEXT NOT NULL DEFAULT 'candidate',
|
|
source_refs TEXT NOT NULL DEFAULT '[]',
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS candidate_evidence (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
repository_id INTEGER NOT NULL REFERENCES repositories(id) ON DELETE CASCADE,
|
|
analysis_run_id INTEGER NOT NULL REFERENCES analysis_runs(id) ON DELETE CASCADE,
|
|
capability_id INTEGER NOT NULL REFERENCES candidate_capabilities(id) ON DELETE CASCADE,
|
|
target_kind TEXT NOT NULL DEFAULT 'capability',
|
|
target_id INTEGER,
|
|
type TEXT NOT NULL,
|
|
reference TEXT NOT NULL,
|
|
reference_kind TEXT NOT NULL DEFAULT 'source',
|
|
reference_id INTEGER,
|
|
strength TEXT NOT NULL DEFAULT 'medium',
|
|
status TEXT NOT NULL DEFAULT 'candidate',
|
|
source_refs TEXT NOT NULL DEFAULT '[]',
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS review_decisions (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
repository_id INTEGER NOT NULL REFERENCES repositories(id) ON DELETE CASCADE,
|
|
analysis_run_id INTEGER REFERENCES analysis_runs(id) ON DELETE SET NULL,
|
|
action TEXT NOT NULL,
|
|
notes TEXT NOT NULL DEFAULT '',
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS repository_scopes (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
repository_id INTEGER NOT NULL UNIQUE REFERENCES repositories(id) ON DELETE CASCADE,
|
|
name TEXT NOT NULL,
|
|
description TEXT NOT NULL DEFAULT '',
|
|
primary_class TEXT NOT NULL DEFAULT 'ability',
|
|
attributes TEXT NOT NULL DEFAULT '[]',
|
|
confidence REAL NOT NULL DEFAULT 1.0,
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS approved_abilities (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
repository_id INTEGER NOT NULL REFERENCES repositories(id) ON DELETE CASCADE,
|
|
name TEXT NOT NULL,
|
|
description TEXT NOT NULL DEFAULT '',
|
|
confidence REAL NOT NULL DEFAULT 1.0,
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS approved_capabilities (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
repository_id INTEGER NOT NULL REFERENCES repositories(id) ON DELETE CASCADE,
|
|
ability_id INTEGER NOT NULL REFERENCES approved_abilities(id) ON DELETE CASCADE,
|
|
name TEXT NOT NULL,
|
|
description TEXT NOT NULL DEFAULT '',
|
|
inputs TEXT NOT NULL DEFAULT '[]',
|
|
outputs TEXT NOT NULL DEFAULT '[]',
|
|
primary_class TEXT NOT NULL DEFAULT 'capability',
|
|
attributes TEXT NOT NULL DEFAULT '[]',
|
|
confidence REAL NOT NULL DEFAULT 1.0,
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS approved_features (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
repository_id INTEGER NOT NULL REFERENCES repositories(id) ON DELETE CASCADE,
|
|
capability_id INTEGER NOT NULL REFERENCES approved_capabilities(id) ON DELETE CASCADE,
|
|
name TEXT NOT NULL,
|
|
type TEXT NOT NULL,
|
|
primary_class TEXT NOT NULL DEFAULT '',
|
|
attributes TEXT NOT NULL DEFAULT '[]',
|
|
location TEXT NOT NULL DEFAULT '',
|
|
confidence REAL NOT NULL DEFAULT 1.0,
|
|
source_refs TEXT NOT NULL DEFAULT '[]',
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS approved_evidence (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
repository_id INTEGER NOT NULL REFERENCES repositories(id) ON DELETE CASCADE,
|
|
capability_id INTEGER NOT NULL REFERENCES approved_capabilities(id) ON DELETE CASCADE,
|
|
target_kind TEXT NOT NULL DEFAULT 'capability',
|
|
target_id INTEGER,
|
|
type TEXT NOT NULL,
|
|
reference TEXT NOT NULL,
|
|
reference_kind TEXT NOT NULL DEFAULT 'source',
|
|
reference_id INTEGER,
|
|
strength TEXT NOT NULL DEFAULT 'medium',
|
|
source_refs TEXT NOT NULL DEFAULT '[]',
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_repositories_status ON repositories(status);
|
|
CREATE INDEX IF NOT EXISTS idx_snapshots_repository ON repository_snapshots(repository_id);
|
|
CREATE INDEX IF NOT EXISTS idx_analysis_runs_repository ON analysis_runs(repository_id);
|
|
CREATE INDEX IF NOT EXISTS idx_observed_facts_repository ON observed_facts(repository_id);
|
|
CREATE INDEX IF NOT EXISTS idx_observed_facts_run ON observed_facts(analysis_run_id);
|
|
CREATE INDEX IF NOT EXISTS idx_content_chunks_repository ON content_chunks(repository_id);
|
|
CREATE INDEX IF NOT EXISTS idx_content_chunks_run ON content_chunks(analysis_run_id);
|
|
CREATE INDEX IF NOT EXISTS idx_candidate_abilities_repository ON candidate_abilities(repository_id);
|
|
CREATE INDEX IF NOT EXISTS idx_candidate_capabilities_repository ON candidate_capabilities(repository_id);
|
|
CREATE INDEX IF NOT EXISTS idx_candidate_features_repository ON candidate_features(repository_id);
|
|
CREATE INDEX IF NOT EXISTS idx_candidate_evidence_repository ON candidate_evidence(repository_id);
|
|
CREATE INDEX IF NOT EXISTS idx_review_decisions_repository ON review_decisions(repository_id);
|
|
CREATE INDEX IF NOT EXISTS idx_scopes_repository ON repository_scopes(repository_id);
|
|
CREATE INDEX IF NOT EXISTS idx_abilities_repository ON approved_abilities(repository_id);
|
|
CREATE INDEX IF NOT EXISTS idx_capabilities_repository ON approved_capabilities(repository_id);
|
|
CREATE INDEX IF NOT EXISTS idx_features_repository ON approved_features(repository_id);
|
|
CREATE INDEX IF NOT EXISTS idx_evidence_repository ON approved_evidence(repository_id);
|