56 lines
2.6 KiB
SQL
56 lines
2.6 KiB
SQL
-- Workflow Relations Schema
|
|||
|
|
-- Stores semantic relations between workflow canvas nodes with versioning support
|
||
|
|
|
||
|
|
-- Table for storing workflow relations with relation wording
|
||
|
|
CREATE TABLE IF NOT EXISTS workflow_relations (
|
||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
|
|
workflow_id VARCHAR(255) NOT NULL,
|
||
|
|
version INTEGER NOT NULL,
|
||
|
|
source_node_id VARCHAR(255) NOT NULL,
|
||
|
|
target_node_id VARCHAR(255) NOT NULL,
|
||
|
|
relation_type VARCHAR(50) NOT NULL, -- data-flow, dependency, conditional, parallel
|
||
|
|
label TEXT NOT NULL,
|
||
|
|
relation_wording JSONB NOT NULL, -- {verb, source_output, target_input, connection_type, confidence, semantic_match}
|
||
|
|
metadata JSONB,
|
||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
FOREIGN KEY (workflow_id) REFERENCES workflows(id) ON DELETE CASCADE,
|
||
|
|
UNIQUE(workflow_id, source_node_id, target_node_id, version)
|
||
|
|
);
|
||
|
|
|
||
|
|
-- Table for versioned history of relation changes
|
||
|
|
CREATE TABLE IF NOT EXISTS workflow_relation_versions (
|
||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
|
|
workflow_id VARCHAR(255) NOT NULL,
|
||
|
|
edge_id VARCHAR(255) NOT NULL,
|
||
|
|
version_num INTEGER NOT NULL,
|
||
|
|
operation VARCHAR(10) NOT NULL, -- CREATE, UPDATE, DELETE
|
||
|
|
snapshot JSONB NOT NULL,
|
||
|
|
changed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
changed_by VARCHAR(255),
|
||
|
|
fields_changed JSONB, -- ["field1", "field2"]
|
||
|
|
FOREIGN KEY (workflow_id) REFERENCES workflows(id) ON DELETE CASCADE,
|
||
|
|
UNIQUE(workflow_id, edge_id, version_num)
|
||
|
|
);
|
||
|
|
|
||
|
|
-- Table for GraphRAG indexing metadata
|
||
|
|
CREATE TABLE IF NOT EXISTS workflow_rag_index (
|
||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
|
|
workflow_id VARCHAR(255) NOT NULL UNIQUE,
|
||
|
|
version INTEGER NOT NULL,
|
||
|
|
indexed_status VARCHAR(20) NOT NULL DEFAULT 'pending', -- pending, indexed, partial, failed
|
||
|
|
embedding_model VARCHAR(100),
|
||
|
|
last_indexed_at TIMESTAMP,
|
||
|
|
index_metadata JSONB,
|
||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
FOREIGN KEY (workflow_id) REFERENCES workflows(id) ON DELETE CASCADE
|
||
|
|
);
|
||
|
|
|
||
|
|
-- Indexes for performance
|
||
|
|
CREATE INDEX idx_workflow_relations_workflow_version ON workflow_relations(workflow_id, version);
|
||
|
|
CREATE INDEX idx_workflow_relations_type ON workflow_relations(relation_type);
|
||
|
|
CREATE INDEX idx_workflow_relations_nodes ON workflow_relations(source_node_id, target_node_id);
|
||
|
|
CREATE INDEX idx_workflow_relation_versions_workflow_edge ON workflow_relation_versions(workflow_id, edge_id);
|
||
|
|
CREATE INDEX idx_workflow_relation_versions_operation ON workflow_relation_versions(operation);
|
||
|
|
CREATE INDEX idx_workflow_rag_index_status ON workflow_rag_index(indexed_status);
|