MySQL · 3187 bytes Raw Blame History
1 -- SPDX-License-Identifier: AGPL-3.0-or-later
2
3 -- ─── check_suites ────────────────────────────────────────────────────
4
5 -- name: GetOrCreateCheckSuite :one
6 -- Idempotent suite-by-(repo, head_sha, app_slug) lookup. Used by every
7 -- check-run create so consumers don't need to manage suite ids. ON
8 -- CONFLICT … DO UPDATE returns the existing row when the unique
9 -- (repo_id, head_sha, app_slug) already exists; otherwise returns the
10 -- freshly inserted one.
11 INSERT INTO check_suites (repo_id, head_sha, app_slug)
12 VALUES ($1, $2, $3)
13 ON CONFLICT (repo_id, head_sha, app_slug) DO UPDATE
14 SET app_slug = EXCLUDED.app_slug
15 RETURNING *;
16
17 -- name: GetCheckSuite :one
18 SELECT * FROM check_suites WHERE id = $1;
19
20 -- name: ListCheckSuitesForCommit :many
21 SELECT * FROM check_suites
22 WHERE repo_id = $1 AND head_sha = $2
23 ORDER BY app_slug;
24
25 -- name: UpdateCheckSuiteRollup :exec
26 -- Persists the rollup result computed in Go (suite_rollup.go).
27 UPDATE check_suites
28 SET status = $2,
29 conclusion = sqlc.narg(conclusion)::check_conclusion
30 WHERE id = $1;
31
32 -- name: ListCheckSuiteIDsForHead :many
33 -- Used by the stale-on-push hook to flip queued/in_progress suites on
34 -- the previous head to conclusion='stale'.
35 SELECT id FROM check_suites
36 WHERE repo_id = $1 AND head_sha = $2 AND status <> 'completed';
37
38 -- name: MarkCheckSuiteStale :exec
39 UPDATE check_suites
40 SET status = 'completed', conclusion = 'stale'
41 WHERE id = $1;
42
43
44 -- ─── check_runs ──────────────────────────────────────────────────────
45
46 -- name: GetCheckRunByExternalID :one
47 -- External-system create dedupe: lookup by (repo, head_sha, name,
48 -- external_id). NULL external_id never matches via this query.
49 SELECT * FROM check_runs
50 WHERE repo_id = $1 AND head_sha = $2 AND name = $3 AND external_id = $4;
51
52 -- name: CreateCheckRun :one
53 INSERT INTO check_runs (
54 suite_id, repo_id, head_sha, name,
55 status, conclusion,
56 started_at, completed_at,
57 details_url, output, external_id
58 ) VALUES (
59 $1, $2, $3, $4,
60 $5, sqlc.narg(conclusion)::check_conclusion,
61 sqlc.narg(started_at)::timestamptz, sqlc.narg(completed_at)::timestamptz,
62 $6, $7, sqlc.narg(external_id)::text
63 )
64 RETURNING *;
65
66 -- name: GetCheckRun :one
67 SELECT * FROM check_runs WHERE id = $1;
68
69 -- name: UpdateCheckRun :exec
70 UPDATE check_runs
71 SET status = $2,
72 conclusion = sqlc.narg(conclusion)::check_conclusion,
73 started_at = sqlc.narg(started_at)::timestamptz,
74 completed_at = sqlc.narg(completed_at)::timestamptz,
75 details_url = $3,
76 output = $4
77 WHERE id = $1;
78
79 -- name: ListCheckRunsForCommit :many
80 SELECT * FROM check_runs
81 WHERE repo_id = $1 AND head_sha = $2
82 ORDER BY name;
83
84 -- name: ListCheckRunsBySuite :many
85 SELECT * FROM check_runs
86 WHERE suite_id = $1
87 ORDER BY name;
88
89 -- name: GetLatestCheckRunByName :one
90 -- Required-check evaluator: most recent run with the given name on the
91 -- specified head_sha.
92 SELECT * FROM check_runs
93 WHERE repo_id = $1 AND head_sha = $2 AND name = $3
94 ORDER BY created_at DESC
95 LIMIT 1;
96