check / check (push) Waiting to run
Replaces #559, which conflicted. Model: opus-5-5
99 lines
2.9 KiB
SQL
99 lines
2.9 KiB
SQL
-- Migration 001: the schema of a webhook's event database. The models
|
|
-- in internal/database must agree with it. The webhook, entrypoint and
|
|
-- target ids here name rows in the main database, which has those
|
|
-- tables; this file does not.
|
|
|
|
CREATE TABLE events (
|
|
id uuid,
|
|
created_at datetime,
|
|
updated_at datetime,
|
|
deleted_at datetime,
|
|
webhook_id uuid NOT NULL,
|
|
entrypoint_id uuid NOT NULL,
|
|
method text NOT NULL,
|
|
raw_query text,
|
|
headers text,
|
|
body text,
|
|
content_type text,
|
|
body_bytes integer NOT NULL,
|
|
resubmitted_from_id uuid,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
CREATE INDEX idx_events_created_at ON events (created_at);
|
|
CREATE INDEX idx_events_deleted_at ON events (deleted_at);
|
|
CREATE INDEX idx_events_deleted_at_created_at
|
|
ON events (deleted_at, created_at);
|
|
CREATE INDEX idx_events_resubmitted_from_id
|
|
ON events (resubmitted_from_id, deleted_at);
|
|
CREATE INDEX idx_events_entrypoint_id
|
|
ON events (entrypoint_id, deleted_at, resubmitted_from_id, created_at);
|
|
|
|
CREATE TABLE deliveries (
|
|
id uuid,
|
|
created_at datetime,
|
|
updated_at datetime,
|
|
deleted_at datetime,
|
|
event_id uuid NOT NULL,
|
|
target_id uuid NOT NULL,
|
|
status text NOT NULL DEFAULT 'pending',
|
|
finished_at datetime,
|
|
replay numeric NOT NULL DEFAULT false,
|
|
PRIMARY KEY (id),
|
|
CONSTRAINT fk_events_deliveries
|
|
FOREIGN KEY (event_id) REFERENCES events (id)
|
|
);
|
|
|
|
CREATE INDEX idx_deliveries_deleted_at ON deliveries (deleted_at);
|
|
CREATE INDEX idx_deliveries_event_id ON deliveries (event_id, deleted_at);
|
|
CREATE INDEX idx_deliveries_status
|
|
ON deliveries (status, deleted_at, finished_at, target_id);
|
|
|
|
CREATE TABLE delivery_results (
|
|
id uuid,
|
|
created_at datetime,
|
|
updated_at datetime,
|
|
deleted_at datetime,
|
|
delivery_id uuid NOT NULL,
|
|
attempt_num integer NOT NULL,
|
|
success numeric,
|
|
status_code integer,
|
|
response_body text,
|
|
error text,
|
|
duration integer,
|
|
PRIMARY KEY (id),
|
|
CONSTRAINT fk_deliveries_delivery_results
|
|
FOREIGN KEY (delivery_id) REFERENCES deliveries (id)
|
|
);
|
|
|
|
CREATE INDEX idx_delivery_results_deleted_at
|
|
ON delivery_results (deleted_at);
|
|
CREATE INDEX idx_delivery_results_delivery_id
|
|
ON delivery_results (delivery_id, deleted_at);
|
|
|
|
CREATE TABLE event_totals (
|
|
id integer PRIMARY KEY AUTOINCREMENT,
|
|
events integer NOT NULL,
|
|
events_removed integer NOT NULL,
|
|
last_event_at datetime
|
|
);
|
|
|
|
-- The one row of event totals, all zero.
|
|
INSERT INTO event_totals (events, events_removed) VALUES (0, 0);
|
|
|
|
CREATE TABLE target_totals (
|
|
target_id uuid,
|
|
deliveries integer NOT NULL,
|
|
delivered integer NOT NULL,
|
|
failed integer NOT NULL,
|
|
deliveries_removed integer NOT NULL,
|
|
failed_removed integer NOT NULL,
|
|
PRIMARY KEY (target_id)
|
|
);
|
|
|
|
CREATE TABLE entrypoint_totals (
|
|
entrypoint_id uuid,
|
|
last_event_at datetime NOT NULL,
|
|
PRIMARY KEY (entrypoint_id)
|
|
);
|