34 lines
1013 B
PL/PgSQL
34 lines
1013 B
PL/PgSQL
BEGIN;
|
|
|
|
ALTER TABLE idempotency_record
|
|
ADD COLUMN actor_key varchar(500) NOT NULL DEFAULT 'urn:legacy:unknown';
|
|
|
|
ALTER TABLE idempotency_record
|
|
DROP CONSTRAINT idempotency_record_tenant_id_scope_idempotency_key_key;
|
|
|
|
ALTER TABLE idempotency_record
|
|
ADD CONSTRAINT idempotency_record_actor_scope_key
|
|
UNIQUE (actor_key, scope, idempotency_key);
|
|
|
|
CREATE INDEX idempotency_record_tenant_scope_idx
|
|
ON idempotency_record (tenant_id, scope, created_at DESC);
|
|
|
|
ALTER TABLE outbox_event
|
|
ADD COLUMN deduplication_key varchar(255),
|
|
ADD COLUMN payload_hash char(64) NOT NULL DEFAULT repeat('0', 64),
|
|
ADD COLUMN dead_at timestamptz;
|
|
|
|
CREATE UNIQUE INDEX outbox_event_deduplication_key
|
|
ON outbox_event (
|
|
COALESCE(tenant_id, '00000000-0000-0000-0000-000000000000'::uuid),
|
|
event_type,
|
|
deduplication_key
|
|
)
|
|
WHERE deduplication_key IS NOT NULL;
|
|
|
|
CREATE INDEX outbox_event_stale_lock_idx
|
|
ON outbox_event (locked_at)
|
|
WHERE status = 'processing';
|
|
|
|
COMMIT;
|