153 lines · 5.3 KB
-- Deferred job compilation: runs keep the workflow source and base expression context so jobs can be
-- recompiled with `needs` outputs once their dependencies finish.
ALTER TABLE workflow_runs ADD COLUMN workflow_source TEXT;
ALTER TABLE workflow_runs ADD COLUMN context TEXT;
ALTER TABLE workflow_runs ADD COLUMN trigger_depth INTEGER NOT NULL DEFAULT 0;
ALTER TABLE workflow_runs ADD COLUMN rerun_of TEXT;

ALTER TABLE workflow_jobs ADD COLUMN outputs TEXT;
ALTER TABLE workflow_jobs ADD COLUMN environment TEXT;
ALTER TABLE workflow_jobs ADD COLUMN gate TEXT;

-- Trigger index of the default branch's workflows, refreshed on push, so non-push events and
-- schedules can be matched without reading git.
CREATE TABLE workflow_triggers (
  repo_id TEXT NOT NULL REFERENCES repos(id) ON DELETE CASCADE,
  workflow_path TEXT NOT NULL,
  workflow_name TEXT NOT NULL,
  events TEXT NOT NULL,
  updated_at INTEGER NOT NULL,
  PRIMARY KEY (repo_id, workflow_path)
);

CREATE TABLE workflow_schedules (
  id TEXT PRIMARY KEY,
  repo_id TEXT NOT NULL REFERENCES repos(id) ON DELETE CASCADE,
  workflow_path TEXT NOT NULL,
  cron TEXT NOT NULL,
  next_run_at INTEGER NOT NULL,
  last_run_at INTEGER,
  UNIQUE (repo_id, workflow_path, cron)
);
CREATE INDEX workflow_schedules_due ON workflow_schedules(next_run_at);

CREATE TABLE action_caches (
  id TEXT PRIMARY KEY,
  repo_id TEXT NOT NULL REFERENCES repos(id) ON DELETE CASCADE,
  ref TEXT NOT NULL,
  key TEXT NOT NULL,
  version TEXT NOT NULL,
  size INTEGER NOT NULL,