Files
data-engine/sql/01_dict_tables.sql
2026-04-30 13:45:41 +08:00

184 lines
9.5 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.
-- PostgreSQL 建表脚本 - dict 包
-- =============================================
-- 数据源平台配置表 (api_datasource_platform)
-- =============================================
CREATE SEQUENCE IF NOT EXISTS api_datasource_platform_id_seq START WITH 1 INCREMENT BY 1;
CREATE TABLE IF NOT EXISTS api_datasource_platform (
id BIGINT NOT NULL DEFAULT nextval('api_datasource_platform_id_seq'::regclass),
tenant_id BIGINT NOT NULL DEFAULT 0,
creator VARCHAR(100) DEFAULT '',
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updater VARCHAR(100) DEFAULT '',
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP WITH TIME ZONE,
platform_code VARCHAR(100) NOT NULL,
platform_name VARCHAR(200) NOT NULL,
description TEXT,
status VARCHAR(50) DEFAULT 'ACTIVE',
api_base_url VARCHAR(500),
auth_type VARCHAR(50) DEFAULT 'API_KEY',
token VARCHAR(500),
api_key VARCHAR(500),
client_id VARCHAR(200),
client_secret VARCHAR(500),
rate_limit_per_minute INT DEFAULT 60,
rate_limit_per_hour INT DEFAULT 3600,
concurrency_limit INT DEFAULT 10,
request_timeout_ms INT DEFAULT 30000,
max_retries INT DEFAULT 3,
retry_delay_ms INT DEFAULT 1000,
version INT DEFAULT 0,
PRIMARY KEY (id)
);
COMMENT ON TABLE api_datasource_platform IS '数据源平台配置表';
COMMENT ON COLUMN api_datasource_platform.id IS '主键ID';
COMMENT ON COLUMN api_datasource_platform.tenant_id IS '租户ID';
COMMENT ON COLUMN api_datasource_platform.creator IS '创建人';
COMMENT ON COLUMN api_datasource_platform.created_at IS '创建时间';
COMMENT ON COLUMN api_datasource_platform.updater IS '更新人';
COMMENT ON COLUMN api_datasource_platform.updated_at IS '更新时间';
COMMENT ON COLUMN api_datasource_platform.deleted_at IS '软删除时间';
COMMENT ON COLUMN api_datasource_platform.platform_code IS '平台编码,唯一标识';
COMMENT ON COLUMN api_datasource_platform.platform_name IS '平台名称';
COMMENT ON COLUMN api_datasource_platform.description IS '平台描述';
COMMENT ON COLUMN api_datasource_platform.status IS '状态: ACTIVE启用, INACTIVE停用';
COMMENT ON COLUMN api_datasource_platform.api_base_url IS 'API基础地址';
COMMENT ON COLUMN api_datasource_platform.auth_type IS '认证类型: TOKEN/API_KEY/OAUTH2/BASIC';
COMMENT ON COLUMN api_datasource_platform.token IS '认证token/密钥';
COMMENT ON COLUMN api_datasource_platform.api_key IS 'API Key';
COMMENT ON COLUMN api_datasource_platform.client_id IS 'OAuth2 Client ID';
COMMENT ON COLUMN api_datasource_platform.client_secret IS 'OAuth2 Client Secret';
COMMENT ON COLUMN api_datasource_platform.rate_limit_per_minute IS '每分钟请求限制';
COMMENT ON COLUMN api_datasource_platform.rate_limit_per_hour IS '每小时请求限制';
COMMENT ON COLUMN api_datasource_platform.concurrency_limit IS '并发连接限制';
COMMENT ON COLUMN api_datasource_platform.request_timeout_ms IS '请求超时时间(毫秒)';
COMMENT ON COLUMN api_datasource_platform.max_retries IS '最大重试次数';
COMMENT ON COLUMN api_datasource_platform.retry_delay_ms IS '重试延迟(毫秒)';
COMMENT ON COLUMN api_datasource_platform.version IS '版本号(乐观锁)';
CREATE UNIQUE INDEX idx_api_datasource_platform_code ON api_datasource_platform(tenant_id, platform_code);
-- =============================================
-- 字段映射配置表 (api_field_mapping_config)
-- =============================================
CREATE SEQUENCE IF NOT EXISTS api_field_mapping_config_id_seq START WITH 1 INCREMENT BY 1;
CREATE TABLE IF NOT EXISTS api_field_mapping_config (
id BIGINT NOT NULL DEFAULT nextval('api_field_mapping_config_id_seq'::regclass),
tenant_id BIGINT NOT NULL DEFAULT 0,
creator VARCHAR(100) DEFAULT '',
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updater VARCHAR(100) DEFAULT '',
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP WITH TIME ZONE,
config_name VARCHAR(200) NOT NULL,
vendor_name VARCHAR(100),
api_name VARCHAR(200),
api_version VARCHAR(50),
source_field VARCHAR(200),
source_field_type VARCHAR(100),
source_field_desc VARCHAR(500),
target_field VARCHAR(200),
target_field_type VARCHAR(100),
target_field_desc VARCHAR(500),
transform_type VARCHAR(100),
transform_params JSONB,
validation_rules JSONB,
default_value VARCHAR(500),
is_required BOOLEAN DEFAULT FALSE,
is_active BOOLEAN DEFAULT TRUE,
priority INT DEFAULT 0,
business_domain VARCHAR(100),
field_group VARCHAR(100),
config_version INT DEFAULT 1,
effective_date TIMESTAMP WITH TIME ZONE,
expiry_date TIMESTAMP WITH TIME ZONE,
PRIMARY KEY (id)
);
COMMENT ON TABLE api_field_mapping_config IS '字段映射配置表';
COMMENT ON COLUMN api_field_mapping_config.id IS '主键ID';
COMMENT ON COLUMN api_field_mapping_config.tenant_id IS '租户ID';
COMMENT ON COLUMN api_field_mapping_config.creator IS '创建人';
COMMENT ON COLUMN api_field_mapping_config.created_at IS '创建时间';
COMMENT ON COLUMN api_field_mapping_config.updater IS '更新人';
COMMENT ON COLUMN api_field_mapping_config.updated_at IS '更新时间';
COMMENT ON COLUMN api_field_mapping_config.deleted_at IS '软删除时间';
COMMENT ON COLUMN api_field_mapping_config.config_name IS '配置名称';
COMMENT ON COLUMN api_field_mapping_config.vendor_name IS '厂商名称';
COMMENT ON COLUMN api_field_mapping_config.api_name IS '接口名称';
COMMENT ON COLUMN api_field_mapping_config.api_version IS '接口版本';
COMMENT ON COLUMN api_field_mapping_config.source_field IS '源字段名';
COMMENT ON COLUMN api_field_mapping_config.source_field_type IS '源字段数据类型';
COMMENT ON COLUMN api_field_mapping_config.source_field_desc IS '源字段描述';
COMMENT ON COLUMN api_field_mapping_config.target_field IS '目标字段名';
COMMENT ON COLUMN api_field_mapping_config.target_field_type IS '目标数据类型';
COMMENT ON COLUMN api_field_mapping_config.target_field_desc IS '字段描述';
COMMENT ON COLUMN api_field_mapping_config.transform_type IS '转换类型';
COMMENT ON COLUMN api_field_mapping_config.transform_params IS '转换参数';
COMMENT ON COLUMN api_field_mapping_config.validation_rules IS '验证规则';
COMMENT ON COLUMN api_field_mapping_config.default_value IS '默认值';
COMMENT ON COLUMN api_field_mapping_config.is_required IS '是否必填';
COMMENT ON COLUMN api_field_mapping_config.is_active IS '是否启用';
COMMENT ON COLUMN api_field_mapping_config.priority IS '优先级';
COMMENT ON COLUMN api_field_mapping_config.business_domain IS '业务域';
COMMENT ON COLUMN api_field_mapping_config.field_group IS '字段分组';
COMMENT ON COLUMN api_field_mapping_config.config_version IS '配置版本号';
COMMENT ON COLUMN api_field_mapping_config.effective_date IS '生效时间';
COMMENT ON COLUMN api_field_mapping_config.expiry_date IS '失效时间';
CREATE INDEX idx_api_field_mapping_config_vendor ON api_field_mapping_config(tenant_id, vendor_name, api_name);
CREATE INDEX idx_api_field_mapping_config_active ON api_field_mapping_config(tenant_id, is_active);
-- =============================================
-- API接口管理表 (api_interface)
-- =============================================
CREATE SEQUENCE IF NOT EXISTS api_interface_id_seq START WITH 1 INCREMENT BY 1;
CREATE TABLE IF NOT EXISTS api_interface (
id BIGINT NOT NULL DEFAULT nextval('api_interface_id_seq'::regclass),
tenant_id BIGINT NOT NULL DEFAULT 0,
creator VARCHAR(100) DEFAULT '',
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updater VARCHAR(100) DEFAULT '',
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP WITH TIME ZONE,
platform_id BIGINT NOT NULL,
name VARCHAR(200) NOT NULL,
code VARCHAR(100) NOT NULL,
url VARCHAR(500) NOT NULL,
method VARCHAR(20) NOT NULL DEFAULT 'GET',
status VARCHAR(50) DEFAULT 'active',
auth_type VARCHAR(50) DEFAULT 'api_key',
request_config JSONB,
response_config JSONB,
limit_config JSONB,
PRIMARY KEY (id)
);
COMMENT ON TABLE api_interface IS 'API接口管理表';
COMMENT ON COLUMN api_interface.id IS '主键ID';
COMMENT ON COLUMN api_interface.tenant_id IS '租户ID';
COMMENT ON COLUMN api_interface.creator IS '创建人';
COMMENT ON COLUMN api_interface.created_at IS '创建时间';
COMMENT ON COLUMN api_interface.updater IS '更新人';
COMMENT ON COLUMN api_interface.updated_at IS '更新时间';
COMMENT ON COLUMN api_interface.deleted_at IS '软删除时间';
COMMENT ON COLUMN api_interface.platform_id IS '所属平台ID';
COMMENT ON COLUMN api_interface.name IS '接口名称';
COMMENT ON COLUMN api_interface.code IS '接口编码';
COMMENT ON COLUMN api_interface.url IS '接口地址';
COMMENT ON COLUMN api_interface.method IS '请求方法GET/POST/PUT/DELETE等';
COMMENT ON COLUMN api_interface.status IS '接口状态active启用/inactive停用';
COMMENT ON COLUMN api_interface.auth_type IS '认证类型oauth2/apikey/basic等';
COMMENT ON COLUMN api_interface.request_config IS '请求配置';
COMMENT ON COLUMN api_interface.response_config IS '响应配置';
COMMENT ON COLUMN api_interface.limit_config IS '接口独立限流配置(可选,覆盖平台配置)';
CREATE UNIQUE INDEX idx_api_interface_code ON api_interface(tenant_id, code);
CREATE INDEX idx_api_interface_platform_id ON api_interface(tenant_id, platform_id);
CREATE INDEX idx_api_interface_status ON api_interface(tenant_id, status);