-- 创建工作流模板表
-- 用于存储所有AI工作流的配置信息，支持多种AI任务类型
-- 实现工作流的版本管理和统一配置

CREATE TABLE IF NOT EXISTS workflow_templates (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    
    -- 基本信息
    name TEXT NOT NULL,                    -- 工作流名称，如 "穿搭生成"
    base_name TEXT NOT NULL,               -- 基础名称，用于版本管理
    version TEXT NOT NULL DEFAULT '1.0',   -- 版本号，如 "1.2", "2.0"
    type TEXT NOT NULL,                    -- 工作流类型：outfit_generation, background_replacement, portrait_enhancement, image_upscaling
    description TEXT,                      -- 工作流描述
    
    -- 配置信息
    comfyui_workflow_json TEXT NOT NULL,  -- ComfyUI工作流JSON配置
    ui_config_json TEXT NOT NULL,         -- 前端界面配置JSON
    execution_config_json TEXT,           -- 执行配置JSON（超时、重试等）
    
    -- 输入输出定义
    input_schema_json TEXT,               -- 输入参数schema定义
    output_schema_json TEXT,              -- 输出结果schema定义
    
    -- 状态管理
    is_active BOOLEAN NOT NULL DEFAULT 1, -- 是否启用
    is_published BOOLEAN NOT NULL DEFAULT 0, -- 是否已发布
    
    -- 元数据
    tags TEXT,                            -- 标签，JSON数组格式
    category TEXT,                        -- 分类
    author TEXT,                          -- 作者
    
    -- 时间戳
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    
    -- 唯一约束：同一base_name下版本号唯一
    UNIQUE(base_name, version)
);

-- 创建索引以提高查询性能
CREATE INDEX IF NOT EXISTS idx_workflow_templates_base_name ON workflow_templates (base_name);
CREATE INDEX IF NOT EXISTS idx_workflow_templates_type ON workflow_templates (type);
CREATE INDEX IF NOT EXISTS idx_workflow_templates_is_active ON workflow_templates (is_active);
CREATE INDEX IF NOT EXISTS idx_workflow_templates_is_published ON workflow_templates (is_published);
CREATE INDEX IF NOT EXISTS idx_workflow_templates_category ON workflow_templates (category);

-- 创建触发器自动更新 updated_at 字段
CREATE TRIGGER IF NOT EXISTS update_workflow_templates_updated_at
    AFTER UPDATE ON workflow_templates
    FOR EACH ROW
BEGIN
    UPDATE workflow_templates SET updated_at = CURRENT_TIMESTAMP WHERE id = NEW.id;
END;
