release / govulncheck (push) Successful in 17s
release / web (push) Successful in 1m33s
release / go (push) Successful in 1m49s
release / integration (push) Successful in 5m42s
release / android (push) Successful in 5m59s
release / Build signed APK (releases and dev) (push) Successful in 6m9s
release / Attach APK to the Release (tag releases only) (push) Skipped
release / Build + push container image (push) Successful in 16s
release / Verify release artifacts (tag releases only) (push) Skipped
Applies rule 32's migration exception: each header still says what the schema was, what changes and what it prevents, but task, milestone, decision and rule ids are replaced by the practice they stood for, the operator quotes by the decision, single-install counts are dropped, and pointers to a deleted package and an external design doc are gone. golang-migrate keeps no checksum, so editing applied migrations' comments is safe. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
21 lines
979 B
SQL
21 lines
979 B
SQL
-- Track library-scan / MBID-backfill / cover-enrich runs so the
|
|
-- admin overview can show last-run results + manual trigger state.
|
|
CREATE TABLE scan_runs (
|
|
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
started_at timestamptz NOT NULL DEFAULT now(),
|
|
finished_at timestamptz,
|
|
-- Per-stage tallies are jsonb so the schema doesn't need to grow when
|
|
-- a stage gains/loses a counter. Each stage's value matches the Go
|
|
-- struct emitted by that worker (e.g. library.Stats).
|
|
library jsonb,
|
|
mbid_backfill jsonb,
|
|
cover_enrich jsonb,
|
|
-- Non-empty when the run as a whole errored (a stage panic, or the
|
|
-- worker hit a fatal error before writing stage tallies).
|
|
error_message text
|
|
);
|
|
|
|
-- The status endpoint always reads the latest row; the in-flight guard
|
|
-- needs to find rows where finished_at IS NULL. Both hit started_at DESC.
|
|
CREATE INDEX scan_runs_started_at_idx ON scan_runs (started_at DESC);
|