Files
Assistant/database/migrations/010_capability_notification_binding.sql
m 6e0040fe89
CI / test (pull_request) Successful in 12s
CI / test (push) Successful in 10s
feat: add notification delivery foundation
2026-08-16 19:08:07 +03:00

37 lines
1.1 KiB
PL/PgSQL

BEGIN;
SET ROLE capability_role;
CREATE TABLE IF NOT EXISTS capability.notification_bindings (
binding_id TEXT NOT NULL,
capability_id TEXT NOT NULL,
owner_principal_id TEXT NOT NULL,
revision BIGINT NOT NULL,
state TEXT NOT NULL,
https_origin TEXT NOT NULL,
delivery_path TEXT NOT NULL,
receipt_path TEXT NOT NULL,
protocol TEXT NOT NULL,
secret_ref TEXT NOT NULL,
verified_at_unix_millis BIGINT NOT NULL,
health TEXT NOT NULL,
recorded_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (binding_id, revision),
CHECK (revision > 0),
CHECK (verified_at_unix_millis > 0),
CHECK (state IN ('ACTIVE','RETIRED')),
CHECK (health IN ('AVAILABLE','DEGRADED','UNAVAILABLE')),
CHECK (protocol = 'IDEMPOTENT_RECEIPT_V1'),
CHECK (https_origin LIKE 'https://%'),
CHECK (delivery_path LIKE '/%'),
CHECK (receipt_path LIKE '/%')
);
CREATE TABLE IF NOT EXISTS capability.notification_binding_heads (
capability_id TEXT NOT NULL,
owner_principal_id TEXT NOT NULL,
binding_id TEXT NOT NULL,
revision BIGINT NOT NULL,
PRIMARY KEY (capability_id, owner_principal_id),
CHECK (revision > 0)
);
RESET ROLE;
COMMIT;