220 lines
11 KiB
SQL
220 lines
11 KiB
SQL
-- 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表示未删除';
|