62 lines
2.4 KiB
MySQL
62 lines
2.4 KiB
MySQL
|
|
-- Workflow definitions (Automation/Tasks)
|
||
|
|
CREATE TABLE IF NOT EXISTS workflow_definitions (
|
||
|
|
id UUID PRIMARY KEY,
|
||
|
|
bot_id UUID NOT NULL,
|
||
|
|
name VARCHAR(200) NOT NULL,
|
||
|
|
description TEXT,
|
||
|
|
steps JSONB NOT NULL DEFAULT '[]',
|
||
|
|
triggers JSONB NOT NULL DEFAULT '[]',
|
||
|
|
error_handling JSONB NOT NULL DEFAULT '{}',
|
||
|
|
enabled BOOLEAN NOT NULL DEFAULT true,
|
||
|
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
||
|
|
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
||
|
|
|
||
|
|
UNIQUE(bot_id, name)
|
||
|
|
);
|
||
|
|
|
||
|
|
-- Workflow executions
|
||
|
|
CREATE TABLE IF NOT EXISTS workflow_executions (
|
||
|
|
id UUID PRIMARY KEY,
|
||
|
|
workflow_id UUID NOT NULL REFERENCES workflow_definitions(id) ON DELETE CASCADE,
|
||
|
|
bot_id UUID NOT NULL,
|
||
|
|
session_id UUID,
|
||
|
|
initiated_by UUID,
|
||
|
|
status VARCHAR(50) NOT NULL DEFAULT 'pending',
|
||
|
|
current_step INTEGER NOT NULL DEFAULT 0,
|
||
|
|
input_data JSONB NOT NULL DEFAULT '{}',
|
||
|
|
output_data JSONB NOT NULL DEFAULT '{}',
|
||
|
|
step_results JSONB NOT NULL DEFAULT '[]',
|
||
|
|
error TEXT,
|
||
|
|
started_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
||
|
|
completed_at TIMESTAMP WITH TIME ZONE,
|
||
|
|
metadata JSONB NOT NULL DEFAULT '{}'
|
||
|
|
);
|
||
|
|
|
||
|
|
-- Workflow step executions
|
||
|
|
CREATE TABLE IF NOT EXISTS workflow_step_executions (
|
||
|
|
id UUID PRIMARY KEY,
|
||
|
|
execution_id UUID NOT NULL REFERENCES workflow_executions(id) ON DELETE CASCADE,
|
||
|
|
step_name VARCHAR(200) NOT NULL,
|
||
|
|
step_index INTEGER NOT NULL,
|
||
|
|
status VARCHAR(50) NOT NULL DEFAULT 'pending',
|
||
|
|
input_data JSONB NOT NULL DEFAULT '{}',
|
||
|
|
output_data JSONB NOT NULL DEFAULT '{}',
|
||
|
|
error TEXT,
|
||
|
|
started_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
||
|
|
completed_at TIMESTAMP WITH TIME ZONE,
|
||
|
|
duration_ms BIGINT
|
||
|
|
);
|
||
|
|
|
||
|
|
-- Indexes for workflow tables
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_workflow_definitions_bot_id ON workflow_definitions(bot_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_workflow_executions_workflow_id ON workflow_executions(workflow_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_workflow_executions_bot_id ON workflow_executions(bot_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_workflow_executions_status ON workflow_executions(status);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_workflow_step_executions_execution_id ON workflow_step_executions(execution_id);
|
||
|
|
|
||
|
|
|
||
|
|
DROP TRIGGER IF EXISTS update_workflow_definitions_updated_at ON workflow_definitions;
|
||
|
|
CREATE TRIGGER update_workflow_definitions_updated_at
|
||
|
|
BEFORE UPDATE ON workflow_definitions
|
||
|
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|