28 lines
1.3 KiB
SQL
28 lines
1.3 KiB
SQL
ALTER TABLE services ADD COLUMN config_files text NOT NULL DEFAULT '';
|
|
ALTER TABLE services ADD COLUMN desired_ref text NOT NULL DEFAULT '';
|
|
|
|
CREATE TABLE update_jobs (
|
|
id bigserial PRIMARY KEY,
|
|
service_id bigint NOT NULL REFERENCES services (id),
|
|
agent_id bigint REFERENCES agents (id),
|
|
from_ref text NOT NULL DEFAULT '',
|
|
to_ref text NOT NULL,
|
|
trigger text NOT NULL CHECK (trigger IN ('manual', 'webhook', 'poll')),
|
|
requested_by text NOT NULL DEFAULT '',
|
|
status text NOT NULL CHECK (status IN ('queued', 'running', 'succeeded', 'failed')),
|
|
output text NOT NULL DEFAULT '',
|
|
output_truncated boolean NOT NULL DEFAULT false,
|
|
error text NOT NULL DEFAULT '',
|
|
created_at timestamptz NOT NULL,
|
|
started_at timestamptz,
|
|
finished_at timestamptz
|
|
);
|
|
|
|
-- One queued or running job per service. CreateJob relies on this index to
|
|
-- turn a second concurrent click into ErrJobActive.
|
|
CREATE UNIQUE INDEX update_jobs_one_active ON update_jobs (service_id)
|
|
WHERE status IN ('queued', 'running');
|
|
CREATE INDEX update_jobs_by_service ON update_jobs (service_id, id DESC);
|
|
CREATE INDEX update_jobs_active_by_agent ON update_jobs (agent_id)
|
|
WHERE status IN ('queued', 'running');
|