37 lines
1.1 KiB
PL/PgSQL
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;
|