Files
data-engine/update.sql
2026-04-02 11:51:44 +08:00

220 lines
11 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 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表示未删除';