Files
junhong_cmp_fiber/internal/testutil/outbox.go
break 17782d5f8e
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m20s
实现七月迭代公共技术基础
2026-07-23 17:52:48 +09:00

28 lines
1.2 KiB
Go

package testutil
import (
"testing"
"gorm.io/gorm"
)
// CreateTemporaryOutboxTable 创建事务内自动回滚的公共 Outbox 测试表。
func CreateTemporaryOutboxTable(t *testing.T, db *gorm.DB) {
t.Helper()
if err := db.Exec(`CREATE TEMP TABLE tb_outbox_event (
id bigserial PRIMARY KEY, event_id varchar(64) NOT NULL UNIQUE,
event_type varchar(150) NOT NULL, payload_version integer NOT NULL,
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, retry_count integer NOT NULL DEFAULT 0,
max_retries integer NOT NULL, next_attempt_at timestamptz NOT NULL,
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()
) ON COMMIT DROP`).Error; err != nil {
t.Fatalf("创建 Outbox 测试表失败:%v", err)
}
}