-- Migration 016: MR file changes table -- Powers file-history and trace commands (Gates 4-5) CREATE TABLE mr_file_changes ( id INTEGER PRIMARY KEY, merge_request_id INTEGER NOT NULL REFERENCES merge_requests(id) ON DELETE CASCADE, project_id INTEGER NOT NULL REFERENCES projects(id) ON DELETE CASCADE, old_path TEXT, new_path TEXT NOT NULL, change_type TEXT NOT NULL CHECK (change_type IN ('added', 'modified', 'renamed', 'deleted')), UNIQUE(merge_request_id, new_path) ); CREATE INDEX idx_mfc_project_path ON mr_file_changes(project_id, new_path); CREATE INDEX idx_mfc_project_old_path ON mr_file_changes(project_id, old_path) WHERE old_path IS NOT NULL; CREATE INDEX idx_mfc_mr ON mr_file_changes(merge_request_id); CREATE INDEX idx_mfc_renamed ON mr_file_changes(project_id, change_type) WHERE change_type = 'renamed'; INSERT INTO schema_version (version, applied_at, description) VALUES (16, strftime('%s', 'now') * 1000, 'MR file changes table');