mirror of
https://github.com/multica-ai/multica.git
synced 2026-07-23 18:17:44 +02:00
Co-authored-by: Eve <eve@multica-ai.local> Co-authored-by: multica-agent <github@multica.ai>
29 lines
1.3 KiB
SQL
29 lines
1.3 KiB
SQL
-- Stash for check_suite webhook events that arrive before the matching PR
|
|
-- row has been mirrored (the `pull_request` and `check_suite` webhooks are
|
|
-- delivered independently and GitHub does not guarantee order). When the
|
|
-- corresponding `pull_request` event upserts the PR row, the handler drains
|
|
-- this table for that (workspace, repo, pr_number) and replays each row
|
|
-- through the normal check_suite upsert path, then deletes the pending row.
|
|
--
|
|
-- We key by (workspace_id, repo_owner, repo_name, pr_number, suite_id) so
|
|
-- repeated deliveries of the same suite while the PR is still missing are
|
|
-- idempotent — the newer payload simply overwrites the older.
|
|
CREATE TABLE github_pending_check_suite (
|
|
workspace_id UUID NOT NULL,
|
|
installation_id BIGINT NOT NULL,
|
|
repo_owner TEXT NOT NULL,
|
|
repo_name TEXT NOT NULL,
|
|
pr_number INTEGER NOT NULL,
|
|
suite_id BIGINT NOT NULL,
|
|
head_sha TEXT NOT NULL,
|
|
app_id BIGINT NOT NULL,
|
|
conclusion TEXT,
|
|
status TEXT NOT NULL,
|
|
suite_updated_at TIMESTAMPTZ NOT NULL,
|
|
received_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
PRIMARY KEY (workspace_id, repo_owner, repo_name, pr_number, suite_id)
|
|
);
|
|
|
|
CREATE INDEX idx_github_pending_check_suite_received_at
|
|
ON github_pending_check_suite(received_at);
|