pr_01m47d24b0e6n91zwymwxg0vpx/services/work/migrations/0001_init.sql

117 lines3,576 bytesCodeBlame
1-- Issues, pull requests, comments and sessions.
2-- Every timestamp is RFC 3339 UTC text.
3
4-- Issues and pull requests share one sequence of numbers per repository.
5CREATE TABLE counters (
6 repo_id TEXT PRIMARY KEY,
7 last INTEGER NOT NULL
8);
9
10CREATE TABLE issues (
11 id TEXT PRIMARY KEY,
12 repo_id TEXT NOT NULL,
13 number INTEGER NOT NULL,
14 title TEXT NOT NULL,
15 body TEXT NOT NULL,
16 -- JSON array of label names.
17 labels TEXT NOT NULL DEFAULT '[]',
18 -- JSON array of commands.
19 checks TEXT NOT NULL DEFAULT '[]',
20 state TEXT NOT NULL DEFAULT 'open',
21 -- Why it was closed: completed or not_planned.
22 reason TEXT,
23 -- The number of the pull request whose merge closed it.
24 resolved_by INTEGER,
25 author_id TEXT NOT NULL,
26 author_name TEXT NOT NULL,
27 created_at TEXT NOT NULL,
28 updated_at TEXT NOT NULL,
29 closed_at TEXT,
30 UNIQUE (repo_id, number)
31);
32CREATE INDEX issues_by_state ON issues (repo_id, state, number);
33
34CREATE TABLE pulls (
35 id TEXT PRIMARY KEY,
36 repo_id TEXT NOT NULL,
37 number INTEGER NOT NULL,
38 -- The issue it is for, if any, and that issue's number.
39 issue_id TEXT REFERENCES issues (id),
40 issue_number INTEGER,
41 title TEXT NOT NULL,
42 body TEXT,
43 agent TEXT NOT NULL,
44 runtime TEXT NOT NULL,
45 status TEXT NOT NULL DEFAULT 'draft',
46 -- Where the change is: a fork made for the pull request, or a branch of
47 -- the repository itself.
48 fork_repo_id TEXT UNIQUE,
49 fork_namespace TEXT,
50 fork_name TEXT,
51 source_branch TEXT,
52 head_commit TEXT,
53 -- What the branch pointed to before a merged pull request landed.
54 merge_base TEXT,
55 merged_by TEXT,
56 merged_at TEXT,
57 -- The pull request merged instead of this one.
58 superseded_by INTEGER,
59 -- The latest run of the issue's acceptance checks, and where it stands.
60 check_run_id TEXT,
61 check_status TEXT,
62 author_id TEXT NOT NULL,
63 author_name TEXT NOT NULL,
64 created_at TEXT NOT NULL,
65 updated_at TEXT NOT NULL,
66 UNIQUE (repo_id, number)
67);
68CREATE INDEX pulls_by_status ON pulls (repo_id, status, number);
69CREATE INDEX pulls_by_issue ON pulls (issue_id);
70CREATE INDEX pulls_by_author ON pulls (author_id, status);
71
72-- On an issue or a pull request: the two share numbers.
73CREATE TABLE comments (
74 id TEXT PRIMARY KEY,
75 repo_id TEXT NOT NULL,
76 number INTEGER NOT NULL,
77 author_id TEXT NOT NULL,
78 author_name TEXT NOT NULL,
79 body TEXT NOT NULL,
80 -- For a comment on one line of a pull request's change: the file, and
81 -- the line as numbered after the change.
82 path TEXT,
83 line INTEGER,
84 -- A reviewer's decision: approve or request_changes.
85 verdict TEXT,
86 created_at TEXT NOT NULL
87);
88CREATE INDEX comments_by_subject ON comments (repo_id, number, id);
89
90CREATE TABLE session_entries (
91 pull_id TEXT NOT NULL REFERENCES pulls (id),
92 seq INTEGER NOT NULL,
93 kind TEXT NOT NULL,
94 text TEXT NOT NULL,
95 tool TEXT,
96 -- The fork's head when the entry was recorded: links reasoning to code.
97 "commit" TEXT,
98 at TEXT NOT NULL,
99 PRIMARY KEY (pull_id, seq)
100);
101
102-- Runs of an issue's acceptance checks against a pull request's head.
103CREATE TABLE check_runs (
104 id TEXT PRIMARY KEY,
105 pull_id TEXT NOT NULL REFERENCES pulls (id),
106 head_commit TEXT NOT NULL,
107 -- queued, running, passed, failed or errored.
108 status TEXT NOT NULL DEFAULT 'queued',
109 -- JSON array of { command, passed, exitCode, output, durationMs }.
110 results TEXT NOT NULL DEFAULT '[]',
111 error TEXT,
112 -- SHA-256 of the token the sandbox reports with.
113 token_hash TEXT NOT NULL,
114 created_at TEXT NOT NULL,
115 finished_at TEXT
116);
117CREATE INDEX check_runs_by_pull ON check_runs (pull_id, id);