54 lines · 2.4 KB
-- Pull requests and code review (workstream 5).

-- Multi-line review comments: start_line..line on start_side..side. Suggestions record the commit that applied them.
ALTER TABLE review_comments ADD COLUMN start_line INTEGER;
ALTER TABLE review_comments ADD COLUMN start_side TEXT CHECK (start_side IN ('LEFT', 'RIGHT'));
ALTER TABLE review_comments ADD COLUMN suggestion_applied_sha TEXT;

ALTER TABLE reviews ADD COLUMN dismissed_by TEXT REFERENCES accounts(id);
ALTER TABLE reviews ADD COLUMN dismiss_reason TEXT;

ALTER TABLE review_requests ADD COLUMN code_owner INTEGER NOT NULL DEFAULT 0;

ALTER TABLE branch_protections ADD COLUMN require_code_owner_review INTEGER NOT NULL DEFAULT 0;

CREATE TABLE pull_auto_merges (
  issue_id TEXT PRIMARY KEY REFERENCES issues(id) ON DELETE CASCADE,
  repo_id TEXT NOT NULL REFERENCES repos(id) ON DELETE CASCADE,
  method TEXT NOT NULL CHECK (method IN ('merge', 'squash', 'rebase')),
  message TEXT NOT NULL DEFAULT '',
  enabled_by TEXT NOT NULL REFERENCES accounts(id),
  created_at INTEGER NOT NULL
);
CREATE INDEX pull_auto_merges_repo ON pull_auto_merges(repo_id);

CREATE TABLE merge_queue_entries (
  id TEXT PRIMARY KEY,
  repo_id TEXT NOT NULL REFERENCES repos(id) ON DELETE CASCADE,
  base_ref TEXT NOT NULL,
  issue_id TEXT NOT NULL REFERENCES issues(id) ON DELETE CASCADE,
  method TEXT NOT NULL CHECK (method IN ('merge', 'squash')),
  state TEXT NOT NULL CHECK (state IN ('queued', 'testing', 'merged', 'failed', 'removed')),
  speculative_sha TEXT,
  base_sha TEXT,
  head_sha TEXT,
  error TEXT,
  enqueued_by TEXT NOT NULL REFERENCES accounts(id),
  created_at INTEGER NOT NULL,
  updated_at INTEGER NOT NULL
);
CREATE INDEX merge_queue_active ON merge_queue_entries(repo_id, base_ref, state, created_at);