feat(webhooks): align account payloads

This commit is contained in:
2026-06-06 06:26:30 +08:00
parent 1adf1c9c31
commit 02ea135e0c
13 changed files with 495 additions and 94 deletions
@@ -0,0 +1,28 @@
CREATE TABLE IF NOT EXISTS webhook_subscriptions (
id SERIAL PRIMARY KEY,
account_id INTEGER NOT NULL,
inbox_id INTEGER,
name VARCHAR(255),
url VARCHAR(2048) NOT NULL,
events JSONB NOT NULL DEFAULT '[]',
secret VARCHAR(128) NOT NULL,
webhook_type INTEGER DEFAULT 0,
active BOOLEAN DEFAULT TRUE,
verified_at TIMESTAMP WITH TIME ZONE,
last_delivery_status VARCHAR(50),
last_delivery_at TIMESTAMP WITH TIME ZONE,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
deleted_at TIMESTAMP WITH TIME ZONE
);
ALTER TABLE webhook_subscriptions
ADD COLUMN IF NOT EXISTS inbox_id INTEGER,
ADD COLUMN IF NOT EXISTS name VARCHAR(255),
ADD COLUMN IF NOT EXISTS webhook_type INTEGER DEFAULT 0;
UPDATE webhook_subscriptions SET active = TRUE WHERE active IS NULL;
CREATE INDEX IF NOT EXISTS idx_webhook_subscriptions_account_id ON webhook_subscriptions(account_id) WHERE deleted_at IS NULL;
CREATE INDEX IF NOT EXISTS idx_webhook_subscriptions_inbox_id ON webhook_subscriptions(inbox_id) WHERE deleted_at IS NULL;
CREATE UNIQUE INDEX IF NOT EXISTS idx_webhook_subscriptions_account_url ON webhook_subscriptions(account_id, url) WHERE deleted_at IS NULL AND active = TRUE;