Files
markitect-main/migrations/prompts/004_create_dependencies.sql
tegwick 9ce157400e feat(prompts): implement Phase 5 - Dependency Tracking (FR-6)
Add directed dependency graph with cycle detection, topological sort,
and query service for finding dependents/dependencies transitively.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 13:18:18 +01:00

37 lines
1.6 KiB
SQL

-- Migration 004: Create prompt dependencies table
-- Implements FR-6: Dependency Tracking
-- FR-6.1: Directed dependency edges between artifacts
-- FR-6.2: Cross-space dependency graph
-- Date: 2026-02-08
-- Prompt dependency edges table
CREATE TABLE IF NOT EXISTS prompt_dependencies (
id TEXT PRIMARY KEY,
source_artifact_id TEXT NOT NULL,
target_artifact_id TEXT NOT NULL,
run_id TEXT NOT NULL,
edge_type TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE(source_artifact_id, target_artifact_id, run_id)
);
-- Note: Foreign keys documented but not enforced (matches existing pattern)
-- source_artifact_id REFERENCES prompt_artifacts(id)
-- target_artifact_id REFERENCES prompt_artifacts(id)
-- run_id REFERENCES prompt_runs(id)
-- Indexes for performance
CREATE INDEX IF NOT EXISTS idx_deps_source ON prompt_dependencies(source_artifact_id);
CREATE INDEX IF NOT EXISTS idx_deps_target ON prompt_dependencies(target_artifact_id);
CREATE INDEX IF NOT EXISTS idx_deps_run ON prompt_dependencies(run_id);
CREATE INDEX IF NOT EXISTS idx_deps_type ON prompt_dependencies(edge_type);
CREATE INDEX IF NOT EXISTS idx_deps_source_target ON prompt_dependencies(source_artifact_id, target_artifact_id);
-- Column documentation:
-- id: Unique UUID for this dependency edge
-- source_artifact_id: Artifact that depends on the target
-- target_artifact_id: Artifact that is depended upon
-- run_id: The execution run that established this dependency
-- edge_type: requires, generates, includes
-- created_at: When this dependency was recorded