Files
data-engine/update.sql

220 lines
11 KiB
MySQL
Raw Permalink Normal View History

2026-04-02 11:51:44 +08:00
-- CID数据库表结构 - PostgreSQL 版本
-- 应用管理表
CREATE TABLE IF NOT EXISTS cid_application (
id BIGSERIAL PRIMARY KEY,
tenant_id VARCHAR(64) DEFAULT '',
name VARCHAR(255) NOT NULL,
app_code VARCHAR(100) NOT NULL,
type VARCHAR(50) NOT NULL,
status VARCHAR(20) NOT NULL DEFAULT 'active',
description TEXT,
access_config JSONB,
limit_config JSONB,
callback_config JSONB,
created_at BIGINT NOT NULL,
updated_at BIGINT NOT NULL,
deleted_at BIGINT DEFAULT 0,
CONSTRAINT uk_cid_application_app_code UNIQUE (app_code, deleted_at)
);
-- 应用表索引
CREATE INDEX IF NOT EXISTS idx_cid_application_tenant ON cid_application(tenant_id);
CREATE INDEX IF NOT EXISTS idx_cid_application_type ON cid_application(type);
CREATE INDEX IF NOT EXISTS idx_cid_application_status ON cid_application(status);
CREATE INDEX IF NOT EXISTS idx_cid_application_name ON cid_application(name);
CREATE INDEX IF NOT EXISTS idx_cid_application_app_code ON cid_application(app_code);
-- 应用表注释
COMMENT ON TABLE cid_application IS '应用管理表';
COMMENT ON COLUMN cid_application.id IS '主键ID';
COMMENT ON COLUMN cid_application.tenant_id IS '租户ID';
COMMENT ON COLUMN cid_application.name IS '应用名称';
COMMENT ON COLUMN cid_application.app_code IS '应用编码(唯一标识)';
COMMENT ON COLUMN cid_application.type IS '应用类型';
COMMENT ON COLUMN cid_application.status IS '应用状态active启用/inactive停用';
COMMENT ON COLUMN cid_application.description IS '应用描述';
COMMENT ON COLUMN cid_application.access_config IS '接入配置';
COMMENT ON COLUMN cid_application.limit_config IS '限流配置';
COMMENT ON COLUMN cid_application.callback_config IS '回调配置';
COMMENT ON COLUMN cid_application.created_at IS '创建时间';
COMMENT ON COLUMN cid_application.updated_at IS '更新时间';
COMMENT ON COLUMN cid_application.deleted_at IS '软删除时间戳0表示未删除';
-- 平台管理表
CREATE TABLE IF NOT EXISTS cid_platform (
id BIGSERIAL PRIMARY KEY,
tenant_id VARCHAR(64) DEFAULT '',
name VARCHAR(255) NOT NULL,
type VARCHAR(50) NOT NULL,
status VARCHAR(20) NOT NULL DEFAULT 'active',
description TEXT,
auth_config JSONB,
limit_config JSONB,
platform_config JSONB,
created_at BIGINT NOT NULL,
updated_at BIGINT NOT NULL,
deleted_at BIGINT DEFAULT 0
);
-- 平台表索引
CREATE INDEX IF NOT EXISTS idx_cid_platform_tenant ON cid_platform(tenant_id);
CREATE INDEX IF NOT EXISTS idx_cid_platform_type ON cid_platform(type);
CREATE INDEX IF NOT EXISTS idx_cid_platform_status ON cid_platform(status);
CREATE INDEX IF NOT EXISTS idx_cid_platform_name ON cid_platform(name);
-- 平台表注释
COMMENT ON TABLE cid_platform IS '平台管理表';
COMMENT ON COLUMN cid_platform.id IS '主键ID';
COMMENT ON COLUMN cid_platform.tenant_id IS '租户ID';
COMMENT ON COLUMN cid_platform.name IS '平台名称';
COMMENT ON COLUMN cid_platform.type IS '平台类型';
COMMENT ON COLUMN cid_platform.status IS '平台状态active启用/inactive停用';
COMMENT ON COLUMN cid_platform.description IS '平台描述';
COMMENT ON COLUMN cid_platform.auth_config IS '认证配置';
COMMENT ON COLUMN cid_platform.limit_config IS '限流配置';
COMMENT ON COLUMN cid_platform.platform_config IS '平台专用配置';
COMMENT ON COLUMN cid_platform.created_at IS '创建时间';
COMMENT ON COLUMN cid_platform.updated_at IS '更新时间';
COMMENT ON COLUMN cid_platform.deleted_at IS '软删除时间戳0表示未删除';
-- 接口管理表
CREATE TABLE IF NOT EXISTS cid_api_interface (
id BIGSERIAL PRIMARY KEY,
tenant_id VARCHAR(64) DEFAULT '',
platform_id BIGINT NOT NULL,
name VARCHAR(255) NOT NULL,
code VARCHAR(100) NOT NULL,
url VARCHAR(500) NOT NULL,
method VARCHAR(10) NOT NULL,
status VARCHAR(20) NOT NULL DEFAULT 'active',
auth_type VARCHAR(50),
request_config JSONB,
response_config JSONB,
limit_config JSONB,
created_at BIGINT NOT NULL,
updated_at BIGINT NOT NULL,
deleted_at BIGINT DEFAULT 0,
CONSTRAINT fk_cid_api_interface_platform FOREIGN KEY (platform_id) REFERENCES cid_platform(id)
);
-- 接口表索引
CREATE INDEX IF NOT EXISTS idx_cid_api_interface_tenant ON cid_api_interface(tenant_id);
CREATE INDEX IF NOT EXISTS idx_cid_api_interface_platform ON cid_api_interface(platform_id);
CREATE INDEX IF NOT EXISTS idx_cid_api_interface_code ON cid_api_interface(code);
CREATE INDEX IF NOT EXISTS idx_cid_api_interface_status ON cid_api_interface(status);
CREATE INDEX IF NOT EXISTS idx_cid_api_interface_name ON cid_api_interface(name);
-- 接口表注释
COMMENT ON TABLE cid_api_interface IS '接口管理表';
COMMENT ON COLUMN cid_api_interface.id IS '主键ID';
COMMENT ON COLUMN cid_api_interface.tenant_id IS '租户ID';
COMMENT ON COLUMN cid_api_interface.platform_id IS '所属平台ID';
COMMENT ON COLUMN cid_api_interface.name IS '接口名称';
COMMENT ON COLUMN cid_api_interface.code IS '接口编码';
COMMENT ON COLUMN cid_api_interface.url IS '接口地址';
COMMENT ON COLUMN cid_api_interface.method IS '请求方法GET/POST/PUT/DELETE等';
COMMENT ON COLUMN cid_api_interface.status IS '接口状态active启用/inactive停用';
COMMENT ON COLUMN cid_api_interface.auth_type IS '认证类型oauth2/apikey/basic等';
COMMENT ON COLUMN cid_api_interface.request_config IS '请求配置';
COMMENT ON COLUMN cid_api_interface.response_config IS '响应配置';
COMMENT ON COLUMN cid_api_interface.limit_config IS '接口独立限流配置(可选,覆盖平台配置)';
COMMENT ON COLUMN cid_api_interface.created_at IS '创建时间';
COMMENT ON COLUMN cid_api_interface.updated_at IS '更新时间';
COMMENT ON COLUMN cid_api_interface.deleted_at IS '软删除时间戳0表示未删除';
-- 数据获取日志表
CREATE TABLE IF NOT EXISTS cid_data_fetch_log (
id BIGSERIAL PRIMARY KEY,
tenant_id VARCHAR(64) DEFAULT '',
platform_id BIGINT NOT NULL,
interface_id BIGINT NOT NULL,
request_id VARCHAR(100) NOT NULL,
status VARCHAR(20) NOT NULL DEFAULT 'pending',
start_time BIGINT NOT NULL,
end_time BIGINT DEFAULT 0,
duration INT DEFAULT 0,
request_config JSONB,
response_data TEXT,
error_message TEXT,
retry_count INT DEFAULT 0,
created_at BIGINT NOT NULL,
updated_at BIGINT NOT NULL,
deleted_at BIGINT DEFAULT 0,
CONSTRAINT fk_cid_data_fetch_log_platform FOREIGN KEY (platform_id) REFERENCES cid_platform(id),
CONSTRAINT fk_cid_data_fetch_log_interface FOREIGN KEY (interface_id) REFERENCES cid_api_interface(id)
);
-- 日志表索引
CREATE INDEX IF NOT EXISTS idx_cid_data_fetch_log_tenant ON cid_data_fetch_log(tenant_id);
CREATE INDEX IF NOT EXISTS idx_cid_data_fetch_log_platform ON cid_data_fetch_log(platform_id);
CREATE INDEX IF NOT EXISTS idx_cid_data_fetch_log_interface ON cid_data_fetch_log(interface_id);
CREATE INDEX IF NOT EXISTS idx_cid_data_fetch_log_request_id ON cid_data_fetch_log(request_id);
CREATE INDEX IF NOT EXISTS idx_cid_data_fetch_log_status ON cid_data_fetch_log(status);
CREATE INDEX IF NOT EXISTS idx_cid_data_fetch_log_start_time ON cid_data_fetch_log(start_time);
-- 日志表注释
COMMENT ON TABLE cid_data_fetch_log IS '数据获取日志表';
COMMENT ON COLUMN cid_data_fetch_log.id IS '主键ID';
COMMENT ON COLUMN cid_data_fetch_log.tenant_id IS '租户ID';
COMMENT ON COLUMN cid_data_fetch_log.platform_id IS '平台ID';
COMMENT ON COLUMN cid_data_fetch_log.interface_id IS '接口ID';
COMMENT ON COLUMN cid_data_fetch_log.request_id IS '请求ID';
COMMENT ON COLUMN cid_data_fetch_log.status IS '执行状态pending/running/success/failed/rate_limit';
COMMENT ON COLUMN cid_data_fetch_log.start_time IS '开始时间(时间戳)';
COMMENT ON COLUMN cid_data_fetch_log.end_time IS '结束时间(时间戳)';
COMMENT ON COLUMN cid_data_fetch_log.duration IS '执行时长(毫秒)';
COMMENT ON COLUMN cid_data_fetch_log.request_config IS '请求配置参数';
COMMENT ON COLUMN cid_data_fetch_log.response_data IS '响应数据JSON';
COMMENT ON COLUMN cid_data_fetch_log.error_message IS '错误信息';
COMMENT ON COLUMN cid_data_fetch_log.retry_count IS '重试次数';
COMMENT ON COLUMN cid_data_fetch_log.created_at IS '创建时间';
COMMENT ON COLUMN cid_data_fetch_log.updated_at IS '更新时间';
COMMENT ON COLUMN cid_data_fetch_log.deleted_at IS '软删除时间戳0表示未删除';
-- 数据映射表
CREATE TABLE IF NOT EXISTS cid_data_mapping (
id BIGSERIAL PRIMARY KEY,
tenant_id VARCHAR(64) DEFAULT '',
platform_id BIGINT NOT NULL,
interface_id BIGINT NOT NULL,
source_field VARCHAR(255) NOT NULL,
target_field VARCHAR(255) NOT NULL,
field_type VARCHAR(50) NOT NULL,
default_value VARCHAR(500),
transform_rule JSONB,
priority INT DEFAULT 0,
status VARCHAR(20) NOT NULL DEFAULT 'active',
created_at BIGINT NOT NULL,
updated_at BIGINT NOT NULL,
deleted_at BIGINT DEFAULT 0,
CONSTRAINT fk_cid_data_mapping_platform FOREIGN KEY (platform_id) REFERENCES cid_platform(id),
CONSTRAINT fk_cid_data_mapping_interface FOREIGN KEY (interface_id) REFERENCES cid_api_interface(id),
CONSTRAINT uk_cid_data_mapping_interface_target UNIQUE (interface_id, target_field, deleted_at)
);
-- 映射表索引
CREATE INDEX IF NOT EXISTS idx_cid_data_mapping_tenant ON cid_data_mapping(tenant_id);
CREATE INDEX IF NOT EXISTS idx_cid_data_mapping_platform ON cid_data_mapping(platform_id);
CREATE INDEX IF NOT EXISTS idx_cid_data_mapping_interface ON cid_data_mapping(interface_id);
CREATE INDEX IF NOT EXISTS idx_cid_data_mapping_source_field ON cid_data_mapping(source_field);
CREATE INDEX IF NOT EXISTS idx_cid_data_mapping_status ON cid_data_mapping(status);
CREATE INDEX IF NOT EXISTS idx_cid_data_mapping_priority ON cid_data_mapping(priority);
-- 映射表注释
COMMENT ON TABLE cid_data_mapping IS '数据映射表';
COMMENT ON COLUMN cid_data_mapping.id IS '主键ID';
COMMENT ON COLUMN cid_data_mapping.tenant_id IS '租户ID';
COMMENT ON COLUMN cid_data_mapping.platform_id IS '平台ID';
COMMENT ON COLUMN cid_data_mapping.interface_id IS '接口ID';
COMMENT ON COLUMN cid_data_mapping.source_field IS '源字段(接口返回字段)';
COMMENT ON COLUMN cid_data_mapping.target_field IS '目标字段(本地表字段)';
COMMENT ON COLUMN cid_data_mapping.field_type IS '字段类型string/int/float/bool/array/object';
COMMENT ON COLUMN cid_data_mapping.default_value IS '默认值';
COMMENT ON COLUMN cid_data_mapping.transform_rule IS '转换规则';
COMMENT ON COLUMN cid_data_mapping.priority IS '优先级(数字越小优先级越高)';
COMMENT ON COLUMN cid_data_mapping.status IS '状态active启用/inactive停用';
COMMENT ON COLUMN cid_data_mapping.created_at IS '创建时间';
COMMENT ON COLUMN cid_data_mapping.updated_at IS '更新时间';
COMMENT ON COLUMN cid_data_mapping.deleted_at IS '软删除时间戳0表示未删除';