24 lines
1.1 KiB
SQL
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;
|