实现七月迭代公共技术基础
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m20s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m20s
This commit is contained in:
11
migrations/000165_create_public_outbox.down.sql
Normal file
11
migrations/000165_create_public_outbox.down.sql
Normal file
@@ -0,0 +1,11 @@
|
||||
-- 已产生可靠事件后禁止通过降级删除事实,只允许空表回滚。
|
||||
DO $$
|
||||
BEGIN
|
||||
IF to_regclass('tb_outbox_event') IS NOT NULL
|
||||
AND EXISTS (SELECT 1 FROM tb_outbox_event LIMIT 1) THEN
|
||||
RAISE EXCEPTION 'tb_outbox_event 已存在事件事实,禁止删表回滚,请停止生产者和 Relay 后向前修复';
|
||||
END IF;
|
||||
END
|
||||
$$;
|
||||
|
||||
DROP TABLE IF EXISTS tb_outbox_event;
|
||||
44
migrations/000165_create_public_outbox.up.sql
Normal file
44
migrations/000165_create_public_outbox.up.sql
Normal file
@@ -0,0 +1,44 @@
|
||||
-- 创建公共 Outbox;该表及全部公共索引、约束只由 tech-public-foundation 维护。
|
||||
CREATE TABLE tb_outbox_event (
|
||||
id bigserial PRIMARY KEY,
|
||||
event_id varchar(64) NOT NULL,
|
||||
event_type varchar(150) NOT NULL,
|
||||
payload_version integer NOT NULL DEFAULT 1,
|
||||
aggregate_type varchar(100) NOT NULL,
|
||||
aggregate_id varchar(100) NOT NULL,
|
||||
resource_type varchar(100) NOT NULL,
|
||||
resource_id varchar(100) NOT NULL,
|
||||
business_key varchar(150) NOT NULL DEFAULT '',
|
||||
request_id varchar(100) NOT NULL DEFAULT '',
|
||||
correlation_id varchar(100) NOT NULL DEFAULT '',
|
||||
payload jsonb NOT NULL,
|
||||
status integer NOT NULL DEFAULT 1,
|
||||
retry_count integer NOT NULL DEFAULT 0,
|
||||
max_retries integer NOT NULL DEFAULT 10,
|
||||
next_attempt_at timestamptz NOT NULL DEFAULT NOW(),
|
||||
lease_owner varchar(100),
|
||||
lease_expires_at timestamptz,
|
||||
last_error_code varchar(100) NOT NULL DEFAULT '',
|
||||
last_error_summary varchar(500) NOT NULL DEFAULT '',
|
||||
delivered_at timestamptz,
|
||||
created_at timestamptz NOT NULL DEFAULT NOW(),
|
||||
updated_at timestamptz NOT NULL DEFAULT NOW(),
|
||||
CONSTRAINT uq_outbox_event_id UNIQUE (event_id),
|
||||
CONSTRAINT ck_outbox_event_status CHECK (status IN (1, 2, 3, 4)),
|
||||
CONSTRAINT ck_outbox_event_payload_version CHECK (payload_version > 0),
|
||||
CONSTRAINT ck_outbox_event_retry_count CHECK (retry_count >= 0 AND max_retries > 0)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_outbox_event_claim
|
||||
ON tb_outbox_event (status, next_attempt_at, lease_expires_at, created_at);
|
||||
CREATE INDEX idx_outbox_event_type_status
|
||||
ON tb_outbox_event (event_type, status);
|
||||
CREATE INDEX idx_outbox_event_aggregate
|
||||
ON tb_outbox_event (aggregate_type, aggregate_id, created_at);
|
||||
CREATE INDEX idx_outbox_event_resource
|
||||
ON tb_outbox_event (resource_type, resource_id, created_at);
|
||||
CREATE INDEX idx_outbox_event_request_id ON tb_outbox_event (request_id) WHERE request_id <> '';
|
||||
CREATE INDEX idx_outbox_event_correlation_id ON tb_outbox_event (correlation_id) WHERE correlation_id <> '';
|
||||
|
||||
COMMENT ON TABLE tb_outbox_event IS '公共可靠事件 Outbox';
|
||||
COMMENT ON COLUMN tb_outbox_event.status IS '投递状态 1=待投递, 2=投递中, 3=已投递, 4=投递失败';
|
||||
11
migrations/000166_create_system_config.down.sql
Normal file
11
migrations/000166_create_system_config.down.sql
Normal file
@@ -0,0 +1,11 @@
|
||||
-- 已产生配置事实后禁止通过降级删除,只允许空表回滚。
|
||||
DO $$
|
||||
BEGIN
|
||||
IF to_regclass('tb_system_config') IS NOT NULL
|
||||
AND EXISTS (SELECT 1 FROM tb_system_config LIMIT 1) THEN
|
||||
RAISE EXCEPTION 'tb_system_config 已存在配置事实,禁止删表回滚,请停止写入后向前修复';
|
||||
END IF;
|
||||
END
|
||||
$$;
|
||||
|
||||
DROP TABLE IF EXISTS tb_system_config;
|
||||
22
migrations/000166_create_system_config.up.sql
Normal file
22
migrations/000166_create_system_config.up.sql
Normal file
@@ -0,0 +1,22 @@
|
||||
-- 创建受控系统配置表;具体业务 Key 由所属业务模块注册,不在公共迁移中预置。
|
||||
CREATE TABLE tb_system_config (
|
||||
id bigserial PRIMARY KEY,
|
||||
config_key varchar(150) NOT NULL,
|
||||
config_value text NOT NULL,
|
||||
value_type varchar(20) NOT NULL,
|
||||
module varchar(100) NOT NULL,
|
||||
description varchar(500) NOT NULL,
|
||||
is_readonly boolean NOT NULL DEFAULT false,
|
||||
is_sensitive boolean NOT NULL DEFAULT false,
|
||||
creator bigint NOT NULL DEFAULT 0,
|
||||
updater bigint NOT NULL DEFAULT 0,
|
||||
created_at timestamptz NOT NULL DEFAULT NOW(),
|
||||
updated_at timestamptz NOT NULL DEFAULT NOW(),
|
||||
CONSTRAINT uq_system_config_key UNIQUE (config_key),
|
||||
CONSTRAINT ck_system_config_value_type CHECK (value_type IN ('string', 'int', 'bool', 'json'))
|
||||
);
|
||||
|
||||
CREATE INDEX idx_system_config_module_key ON tb_system_config (module, config_key);
|
||||
|
||||
COMMENT ON TABLE tb_system_config IS '受控系统配置表';
|
||||
COMMENT ON COLUMN tb_system_config.value_type IS '值类型 string/int/bool/json';
|
||||
Reference in New Issue
Block a user