feat(catalog): persist idempotent bulk operations and retryable deliveries
This commit is contained in:
1 parent
76e46d295c
commit
13665e0c3c
53 files changed
+1316
-76
No files matched your search
@@ -0,0 +1,25 @@
|
||||
CREATE TABLE IF NOT EXISTS cms_operations (
|
||||
id CHAR(36) CHARACTER SET ascii COLLATE ascii_bin PRIMARY KEY,
|
||||
actor_id INT NOT NULL,
|
||||
kind VARCHAR(64) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
|
||||
request_key CHAR(36) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
|
||||
request_hash CHAR(64) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
|
||||
result_json MEDIUMTEXT NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
UNIQUE KEY operation_request (actor_id,kind,request_key)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
CREATE TABLE IF NOT EXISTS cms_outbox (
|
||||
id CHAR(36) CHARACTER SET ascii COLLATE ascii_bin PRIMARY KEY,
|
||||
operation_id CHAR(36) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
|
||||
topic VARCHAR(64) NOT NULL,
|
||||
status VARCHAR(16) NOT NULL DEFAULT 'pending',
|
||||
attempts INT NOT NULL DEFAULT 0,
|
||||
available_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
lease_until DATETIME(3) NULL,
|
||||
lease_token CHAR(36) CHARACTER SET ascii COLLATE ascii_bin NULL,
|
||||
last_error VARCHAR(255) NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
UNIQUE KEY operation_effect (operation_id,topic),
|
||||
KEY delivery_pending (status,available_at),
|
||||
KEY delivery_lease (status,lease_until)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
Reference in new issue
Block a user