29 lines
1.3 KiB
SQL
29 lines
1.3 KiB
SQL
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;
|