-- =============================================
-- 数据总线 API 版本历史表（备忘录模式）
-- 功能说明：
-- 1. 每次保存 API 配置时自动创建版本记录
-- 2. 版本号自动递增（v1, v2, v3...）
-- 3. 保留完整历史链，不可删除
-- 4. 支持一键回滚到任意历史版本
-- 5. 支持版本对比功能
-- =============================================

-- 如果表已存在则删除
DROP TABLE IF EXISTS databus_api_version;

-- 创建版本历史表（DM8 语法）
CREATE TABLE databus_api_version (
    id BIGINT NOT NULL,
    api_id BIGINT NOT NULL,
    version_number INTEGER NOT NULL,
    snapshot_data CLOB NOT NULL,
    description VARCHAR(500),
    is_current NUMBER(1) DEFAULT 0 NOT NULL,
    operator VARCHAR(64),
    creator VARCHAR(64) DEFAULT '' NOT NULL,
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    updater VARCHAR(64) DEFAULT '' NOT NULL,
    update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    deleted NUMBER(1) DEFAULT 0 NOT NULL,
    tenant_id BIGINT DEFAULT 0 NOT NULL,
    CONSTRAINT pk_databus_api_version PRIMARY KEY (id)
);

-- 创建索引
CREATE INDEX idx_databus_api_version_api_id ON databus_api_version (api_id);
CREATE INDEX idx_databus_api_version_version_number ON databus_api_version (api_id, version_number);
CREATE INDEX idx_databus_api_version_is_current ON databus_api_version (api_id, is_current);
CREATE INDEX idx_databus_api_version_create_time ON databus_api_version (create_time);
CREATE INDEX idx_databus_api_version_operator ON databus_api_version (operator);

COMMENT ON TABLE databus_api_version IS '数据总线API版本历史表：采用备忘录模式，每次保存API时自动创建版本快照，支持完整的版本历史追溯和回滚';
COMMENT ON COLUMN databus_api_version.id IS '主键ID';
COMMENT ON COLUMN databus_api_version.api_id IS 'API定义ID，关联databus_api_definition表';
COMMENT ON COLUMN databus_api_version.version_number IS '版本号，同一API下自动递增（1,2,3...）';
COMMENT ON COLUMN databus_api_version.snapshot_data IS 'API完整配置快照（JSON格式），包含definition、steps、transforms等所有信息';
COMMENT ON COLUMN databus_api_version.description IS '变更说明，记录本次修改的内容';
COMMENT ON COLUMN databus_api_version.is_current IS '是否为当前版本（1=是，0=否），同一API只有一个当前版本';
COMMENT ON COLUMN databus_api_version.operator IS '操作人，记录谁创建了这个版本';
COMMENT ON COLUMN databus_api_version.creator IS '创建者';
COMMENT ON COLUMN databus_api_version.create_time IS '创建时间（版本创建时间）';
COMMENT ON COLUMN databus_api_version.updater IS '更新者';
COMMENT ON COLUMN databus_api_version.update_time IS '更新时间';
COMMENT ON COLUMN databus_api_version.deleted IS '是否删除（逻辑删除，实际不删除版本历史）';
COMMENT ON COLUMN databus_api_version.tenant_id IS '租户ID';
