mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-14 17:02:49 +03:00
87 lines
2.6 KiB
MySQL
87 lines
2.6 KiB
MySQL
|
CREATE TABLE hdb_catalog.hdb_cron_triggers
|
||
|
(
|
||
|
name TEXT PRIMARY KEY,
|
||
|
webhook_conf JSON NOT NULL,
|
||
|
cron_schedule TEXT NOT NULL,
|
||
|
payload JSON,
|
||
|
retry_conf JSON,
|
||
|
header_conf JSON,
|
||
|
include_in_metadata BOOLEAN NOT NULL DEFAULT FALSE,
|
||
|
comment TEXT
|
||
|
);
|
||
|
|
||
|
CREATE TABLE hdb_catalog.hdb_cron_events
|
||
|
(
|
||
|
id TEXT DEFAULT gen_random_uuid() PRIMARY KEY,
|
||
|
trigger_name TEXT NOT NULL,
|
||
|
scheduled_time TIMESTAMPTZ NOT NULL,
|
||
|
additional_payload JSON,
|
||
|
status TEXT NOT NULL DEFAULT 'scheduled',
|
||
|
tries INTEGER NOT NULL DEFAULT 0,
|
||
|
created_at TIMESTAMP DEFAULT NOW(),
|
||
|
next_retry_at TIMESTAMPTZ,
|
||
|
|
||
|
FOREIGN KEY (trigger_name) REFERENCES hdb_catalog.hdb_cron_triggers(name)
|
||
|
ON UPDATE CASCADE ON DELETE CASCADE,
|
||
|
CONSTRAINT valid_status CHECK (status IN ('scheduled','locked','delivered','error','dead'))
|
||
|
);
|
||
|
|
||
|
CREATE INDEX hdb_cron_event_status ON hdb_catalog.hdb_cron_events (status);
|
||
|
|
||
|
CREATE TABLE hdb_catalog.hdb_cron_event_invocation_logs
|
||
|
(
|
||
|
id TEXT DEFAULT gen_random_uuid() PRIMARY KEY,
|
||
|
event_id TEXT,
|
||
|
status INTEGER,
|
||
|
request JSON,
|
||
|
response JSON,
|
||
|
created_at TIMESTAMP DEFAULT NOW(),
|
||
|
|
||
|
FOREIGN KEY (event_id) REFERENCES hdb_catalog.hdb_cron_events (id)
|
||
|
ON UPDATE CASCADE ON DELETE CASCADE
|
||
|
);
|
||
|
|
||
|
CREATE VIEW hdb_catalog.hdb_cron_events_stats AS
|
||
|
SELECT ct.name,
|
||
|
COALESCE(ce.upcoming_events_count,0) as upcoming_events_count,
|
||
|
COALESCE(ce.max_scheduled_time, now()) as max_scheduled_time
|
||
|
FROM hdb_catalog.hdb_cron_triggers ct
|
||
|
LEFT JOIN
|
||
|
( SELECT trigger_name, count(*) as upcoming_events_count, max(scheduled_time) as max_scheduled_time
|
||
|
FROM hdb_catalog.hdb_cron_events
|
||
|
WHERE tries = 0 AND status = 'scheduled'
|
||
|
GROUP BY trigger_name
|
||
|
) ce
|
||
|
ON ct.name = ce.trigger_name;
|
||
|
|
||
|
CREATE TABLE hdb_catalog.hdb_scheduled_events
|
||
|
(
|
||
|
id TEXT DEFAULT gen_random_uuid() PRIMARY KEY,
|
||
|
webhook_conf JSON NOT NULL,
|
||
|
scheduled_time TIMESTAMPTZ NOT NULL,
|
||
|
retry_conf JSON,
|
||
|
payload JSON,
|
||
|
header_conf JSON,
|
||
|
status TEXT NOT NULL DEFAULT 'scheduled',
|
||
|
tries INTEGER NOT NULL DEFAULT 0,
|
||
|
created_at TIMESTAMP DEFAULT NOW(),
|
||
|
next_retry_at TIMESTAMPTZ,
|
||
|
comment TEXT,
|
||
|
CONSTRAINT valid_status CHECK (status IN ('scheduled','locked','delivered','error','dead'))
|
||
|
);
|
||
|
|
||
|
CREATE INDEX hdb_scheduled_event_status ON hdb_catalog.hdb_scheduled_events (status);
|
||
|
|
||
|
CREATE TABLE hdb_catalog.hdb_scheduled_event_invocation_logs
|
||
|
(
|
||
|
id TEXT DEFAULT gen_random_uuid() PRIMARY KEY,
|
||
|
event_id TEXT,
|
||
|
status INTEGER,
|
||
|
request JSON,
|
||
|
response JSON,
|
||
|
created_at TIMESTAMP DEFAULT NOW(),
|
||
|
|
||
|
FOREIGN KEY (event_id) REFERENCES hdb_catalog.hdb_scheduled_events (id)
|
||
|
ON DELETE CASCADE ON UPDATE CASCADE
|
||
|
);
|