00cd28e79b
Adds an artist-art-enrich stage after cover-enrich in RunScan. The stage drains EnrichArtistBatch with a configurable cap and the operator's data_dir, persists processed/succeeded/failed tallies to the scan_runs.artist_art_enrich jsonb column added in migration 0018. The admin /admin Library Scan card grid expands from 3 to 4 columns with the new "Artist art" card mirroring the cover-enrichment one (Processed / Succeeded / Failed). The TS ScanStatus type gains an optional artist_art_enrich field. The Go scanStatusResp gains the matching ArtistArtEnrich json.RawMessage field. cmd/minstrel/main.go (and admin scan-trigger handler) wire the new RunScanConfig fields: ArtistEnrichCap reuses cfg.Library.CoverArtBackfillCap for now (can be split if separate budgets are useful), DataDir is cfg.Storage.DataDir. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
49 lines
1.7 KiB
SQL
49 lines
1.7 KiB
SQL
-- M7 #381: scan-run lifecycle queries.
|
|
|
|
-- name: InsertScanRun :one
|
|
-- Creates a new scan_runs row with started_at=now(). Stages are filled in
|
|
-- as each completes via UpdateScanRunStage; finished_at is set by FinishScanRun.
|
|
INSERT INTO scan_runs DEFAULT VALUES RETURNING id, started_at;
|
|
|
|
-- name: UpdateScanRunLibrary :exec
|
|
-- Persists the file-walk stage's tallies. Idempotent — overwrites prior
|
|
-- value if the orchestrator re-runs the stage on retry.
|
|
UPDATE scan_runs SET library = $2 WHERE id = $1;
|
|
|
|
-- name: UpdateScanRunMbidBackfill :exec
|
|
UPDATE scan_runs SET mbid_backfill = $2 WHERE id = $1;
|
|
|
|
-- name: UpdateScanRunCoverEnrich :exec
|
|
UPDATE scan_runs SET cover_enrich = $2 WHERE id = $1;
|
|
|
|
-- name: FinishScanRun :exec
|
|
-- Closes the row. error_message is non-empty only when a fatal error
|
|
-- aborted the chain before normal completion.
|
|
UPDATE scan_runs
|
|
SET finished_at = now(),
|
|
error_message = NULLIF($2::text, '')
|
|
WHERE id = $1;
|
|
|
|
-- name: GetLatestScanRun :one
|
|
-- Powers GET /api/admin/scan/status. Returns NoRows when no scan has
|
|
-- ever run; the API layer maps that to a 200 with empty payload.
|
|
SELECT id, started_at, finished_at, library, mbid_backfill, cover_enrich, artist_art_enrich, error_message
|
|
FROM scan_runs
|
|
ORDER BY started_at DESC
|
|
LIMIT 1;
|
|
|
|
-- name: UpdateScanRunArtistArtEnrich :exec
|
|
-- M7 cover-sources: persists the artist-art enrich stage tally JSON.
|
|
UPDATE scan_runs
|
|
SET artist_art_enrich = $2
|
|
WHERE id = $1;
|
|
|
|
-- name: GetInFlightScanRun :one
|
|
-- Used by POST /api/admin/scan/run to 409 when a scan is already running.
|
|
-- "In flight" = finished_at IS NULL.
|
|
SELECT id, started_at
|
|
FROM scan_runs
|
|
WHERE finished_at IS NULL
|
|
ORDER BY started_at DESC
|
|
LIMIT 1;
|