Files
iqudo-top1/migrations/000003_multitable_outbox.up.sql
2026-08-18 16:27:02 +08:00

24 lines
1.1 KiB
SQL

CREATE TABLE multitable_outbox (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
tenant_id BIGINT UNSIGNED NOT NULL,
audit_log_id BIGINT UNSIGNED NULL,
resource VARCHAR(64) NOT NULL,
resource_id BIGINT UNSIGNED NOT NULL,
action VARCHAR(64) NOT NULL,
payload JSON NOT NULL,
dedupe_key VARCHAR(191) NOT NULL,
status VARCHAR(24) NOT NULL DEFAULT 'pending',
attempts INT NOT NULL DEFAULT 0,
available_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
last_error TEXT NOT NULL,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_multitable_outbox_audit (audit_log_id),
UNIQUE KEY uk_multitable_outbox_dedupe (dedupe_key),
KEY idx_multitable_outbox_pending (status, available_at),
KEY idx_multitable_outbox_resource (tenant_id, resource, resource_id),
CONSTRAINT fk_multitable_outbox_tenant FOREIGN KEY (tenant_id) REFERENCES tenants(id),
CONSTRAINT fk_multitable_outbox_audit FOREIGN KEY (audit_log_id) REFERENCES audit_logs(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;