fix: migrate event bridge customer columns
This commit is contained in:
@@ -129,7 +129,7 @@ CREATE TABLE IF NOT EXISTS bridge_outbox (
|
|||||||
event_version INT NOT NULL COMMENT '事件契约版本',
|
event_version INT NOT NULL COMMENT '事件契约版本',
|
||||||
source_region VARCHAR(32) NOT NULL COMMENT '来源区域',
|
source_region VARCHAR(32) NOT NULL COMMENT '来源区域',
|
||||||
target_region VARCHAR(32) NOT NULL COMMENT '目标区域',
|
target_region VARCHAR(32) NOT NULL COMMENT '目标区域',
|
||||||
tenant_id VARCHAR(128) NOT NULL COMMENT '客户或业务隔离标识;跨区域事件沿用来源系统口径',
|
customer_id VARCHAR(128) NOT NULL COMMENT '客户或业务隔离标识;跨区域事件沿用来源系统口径',
|
||||||
aggregate_type VARCHAR(64) NOT NULL COMMENT '聚合类型',
|
aggregate_type VARCHAR(64) NOT NULL COMMENT '聚合类型',
|
||||||
aggregate_id VARCHAR(128) NOT NULL COMMENT '聚合标识',
|
aggregate_id VARCHAR(128) NOT NULL COMMENT '聚合标识',
|
||||||
aggregate_version BIGINT NOT NULL COMMENT '聚合版本',
|
aggregate_version BIGINT NOT NULL COMMENT '聚合版本',
|
||||||
@@ -160,7 +160,7 @@ CREATE TABLE IF NOT EXISTS bridge_inbox (
|
|||||||
event_version INT NOT NULL COMMENT '事件契约版本',
|
event_version INT NOT NULL COMMENT '事件契约版本',
|
||||||
source_region VARCHAR(32) NOT NULL COMMENT '来源区域',
|
source_region VARCHAR(32) NOT NULL COMMENT '来源区域',
|
||||||
target_region VARCHAR(32) NOT NULL COMMENT '目标区域',
|
target_region VARCHAR(32) NOT NULL COMMENT '目标区域',
|
||||||
tenant_id VARCHAR(128) NOT NULL COMMENT '客户或业务隔离标识;跨区域事件沿用来源系统口径',
|
customer_id VARCHAR(128) NOT NULL COMMENT '客户或业务隔离标识;跨区域事件沿用来源系统口径',
|
||||||
aggregate_type VARCHAR(64) NOT NULL COMMENT '聚合类型',
|
aggregate_type VARCHAR(64) NOT NULL COMMENT '聚合类型',
|
||||||
aggregate_id VARCHAR(128) NOT NULL COMMENT '聚合标识',
|
aggregate_id VARCHAR(128) NOT NULL COMMENT '聚合标识',
|
||||||
aggregate_version BIGINT NOT NULL COMMENT '聚合版本',
|
aggregate_version BIGINT NOT NULL COMMENT '聚合版本',
|
||||||
@@ -184,6 +184,41 @@ CREATE TABLE IF NOT EXISTS bridge_inbox (
|
|||||||
KEY idx_bridge_inbox_consume (status, next_retry_at, lease_until)
|
KEY idx_bridge_inbox_consume (status, next_retry_at, lease_until)
|
||||||
) ENGINE=InnoDB COMMENT='跨区域事件已接收箱';
|
) ENGINE=InnoDB COMMENT='跨区域事件已接收箱';
|
||||||
|
|
||||||
|
-- 旧开发库曾使用 tenant_id;当前 Event Bridge 实体统一为 customer_id。幂等改名并保留原数据。
|
||||||
|
SET @bridge_inbox_customer_column = (
|
||||||
|
SELECT COUNT(*) FROM information_schema.columns
|
||||||
|
WHERE table_schema = 'baiyue_event_bridge' AND table_name = 'bridge_inbox' AND column_name = 'customer_id'
|
||||||
|
);
|
||||||
|
SET @bridge_inbox_tenant_column = (
|
||||||
|
SELECT COUNT(*) FROM information_schema.columns
|
||||||
|
WHERE table_schema = 'baiyue_event_bridge' AND table_name = 'bridge_inbox' AND column_name = 'tenant_id'
|
||||||
|
);
|
||||||
|
SET @bridge_inbox_column_sql = IF(
|
||||||
|
@bridge_inbox_customer_column = 0 AND @bridge_inbox_tenant_column = 1,
|
||||||
|
'ALTER TABLE bridge_inbox RENAME COLUMN tenant_id TO customer_id',
|
||||||
|
'SELECT 1'
|
||||||
|
);
|
||||||
|
PREPARE bridge_inbox_column_statement FROM @bridge_inbox_column_sql;
|
||||||
|
EXECUTE bridge_inbox_column_statement;
|
||||||
|
DEALLOCATE PREPARE bridge_inbox_column_statement;
|
||||||
|
|
||||||
|
SET @bridge_outbox_customer_column = (
|
||||||
|
SELECT COUNT(*) FROM information_schema.columns
|
||||||
|
WHERE table_schema = 'baiyue_event_bridge' AND table_name = 'bridge_outbox' AND column_name = 'customer_id'
|
||||||
|
);
|
||||||
|
SET @bridge_outbox_tenant_column = (
|
||||||
|
SELECT COUNT(*) FROM information_schema.columns
|
||||||
|
WHERE table_schema = 'baiyue_event_bridge' AND table_name = 'bridge_outbox' AND column_name = 'tenant_id'
|
||||||
|
);
|
||||||
|
SET @bridge_outbox_column_sql = IF(
|
||||||
|
@bridge_outbox_customer_column = 0 AND @bridge_outbox_tenant_column = 1,
|
||||||
|
'ALTER TABLE bridge_outbox RENAME COLUMN tenant_id TO customer_id',
|
||||||
|
'SELECT 1'
|
||||||
|
);
|
||||||
|
PREPARE bridge_outbox_column_statement FROM @bridge_outbox_column_sql;
|
||||||
|
EXECUTE bridge_outbox_column_statement;
|
||||||
|
DEALLOCATE PREPARE bridge_outbox_column_statement;
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS bridge_delivery_attempt (
|
CREATE TABLE IF NOT EXISTS bridge_delivery_attempt (
|
||||||
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
event_id VARCHAR(128) NOT NULL COMMENT '事件全局标识',
|
event_id VARCHAR(128) NOT NULL COMMENT '事件全局标识',
|
||||||
@@ -12397,7 +12432,7 @@ CALL queue_column_comment('baiyue_event_bridge', 'bridge_inbox', 'retry_count',
|
|||||||
CALL queue_column_comment('baiyue_event_bridge', 'bridge_inbox', 'source_region', '来源区域');
|
CALL queue_column_comment('baiyue_event_bridge', 'bridge_inbox', 'source_region', '来源区域');
|
||||||
CALL queue_column_comment('baiyue_event_bridge', 'bridge_inbox', 'status', '消费状态');
|
CALL queue_column_comment('baiyue_event_bridge', 'bridge_inbox', 'status', '消费状态');
|
||||||
CALL queue_column_comment('baiyue_event_bridge', 'bridge_inbox', 'target_region', '目标区域');
|
CALL queue_column_comment('baiyue_event_bridge', 'bridge_inbox', 'target_region', '目标区域');
|
||||||
CALL queue_column_comment('baiyue_event_bridge', 'bridge_inbox', 'tenant_id', '客户或业务隔离标识;跨区域事件沿用来源系统口径');
|
CALL queue_column_comment('baiyue_event_bridge', 'bridge_inbox', 'customer_id', '客户或业务隔离标识;跨区域事件沿用来源系统口径');
|
||||||
CALL queue_column_comment('baiyue_event_bridge', 'bridge_inbox', 'trace_id', '链路标识');
|
CALL queue_column_comment('baiyue_event_bridge', 'bridge_inbox', 'trace_id', '链路标识');
|
||||||
CALL queue_column_comment('baiyue_event_bridge', 'bridge_outbox', 'aggregate_id', '聚合标识');
|
CALL queue_column_comment('baiyue_event_bridge', 'bridge_outbox', 'aggregate_id', '聚合标识');
|
||||||
CALL queue_column_comment('baiyue_event_bridge', 'bridge_outbox', 'aggregate_type', '聚合类型');
|
CALL queue_column_comment('baiyue_event_bridge', 'bridge_outbox', 'aggregate_type', '聚合类型');
|
||||||
@@ -12422,7 +12457,7 @@ CALL queue_column_comment('baiyue_event_bridge', 'bridge_outbox', 'retry_count',
|
|||||||
CALL queue_column_comment('baiyue_event_bridge', 'bridge_outbox', 'source_region', '来源区域');
|
CALL queue_column_comment('baiyue_event_bridge', 'bridge_outbox', 'source_region', '来源区域');
|
||||||
CALL queue_column_comment('baiyue_event_bridge', 'bridge_outbox', 'status', '投递状态');
|
CALL queue_column_comment('baiyue_event_bridge', 'bridge_outbox', 'status', '投递状态');
|
||||||
CALL queue_column_comment('baiyue_event_bridge', 'bridge_outbox', 'target_region', '目标区域');
|
CALL queue_column_comment('baiyue_event_bridge', 'bridge_outbox', 'target_region', '目标区域');
|
||||||
CALL queue_column_comment('baiyue_event_bridge', 'bridge_outbox', 'tenant_id', '客户或业务隔离标识;跨区域事件沿用来源系统口径');
|
CALL queue_column_comment('baiyue_event_bridge', 'bridge_outbox', 'customer_id', '客户或业务隔离标识;跨区域事件沿用来源系统口径');
|
||||||
CALL queue_column_comment('baiyue_event_bridge', 'bridge_outbox', 'trace_id', '链路标识');
|
CALL queue_column_comment('baiyue_event_bridge', 'bridge_outbox', 'trace_id', '链路标识');
|
||||||
CALL queue_column_comment('baiyue_file', 'file_download_log', 'client_ip', '客户端IP');
|
CALL queue_column_comment('baiyue_file', 'file_download_log', 'client_ip', '客户端IP');
|
||||||
CALL queue_column_comment('baiyue_file', 'file_download_log', 'downloaded_at', '下载时间');
|
CALL queue_column_comment('baiyue_file', 'file_download_log', 'downloaded_at', '下载时间');
|
||||||
|
|||||||
@@ -101,3 +101,15 @@ test('domestic Auth receives the overseas JWT signing configuration', async () =
|
|||||||
'OVERSEAS_JWT_RSA_JWK_SET', 'OVERSEAS_JWT_CURRENT_KID', 'OVERSEAS_ACCESS_TOKEN_TTL'
|
'OVERSEAS_JWT_RSA_JWK_SET', 'OVERSEAS_JWT_CURRENT_KID', 'OVERSEAS_ACCESS_TOKEN_TTL'
|
||||||
]) assert.match(compose, new RegExp(`${key}: \\$\\{${key}`))
|
]) assert.match(compose, new RegExp(`${key}: \\$\\{${key}`))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('domestic event bridge SQL converges legacy tenant columns to the customer entity contract', async () => {
|
||||||
|
const baseline = await read('event-bridge-service/src/main/resources/db/event-bridge.sql')
|
||||||
|
const incremental = await read('deploy/sql/头程数据库统一增量-MySQL8.sql')
|
||||||
|
assert.equal((baseline.match(/customer_id VARCHAR\(128\) NOT NULL/g) || []).length, 2)
|
||||||
|
assert.equal((incremental.slice(0, incremental.indexOf('CREATE TABLE IF NOT EXISTS bridge_delivery_attempt'))
|
||||||
|
.match(/customer_id VARCHAR\(128\) NOT NULL/g) || []).length, 2)
|
||||||
|
assert.match(incremental, /ALTER TABLE bridge_inbox RENAME COLUMN tenant_id TO customer_id/)
|
||||||
|
assert.match(incremental, /ALTER TABLE bridge_outbox RENAME COLUMN tenant_id TO customer_id/)
|
||||||
|
assert.match(incremental, /bridge_inbox_customer_column = 0 AND @bridge_inbox_tenant_column = 1/)
|
||||||
|
assert.match(incremental, /bridge_outbox_customer_column = 0 AND @bridge_outbox_tenant_column = 1/)
|
||||||
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user