| 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 |