This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
-- 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);
|
||||
Reference in New Issue
Block a user