feat(db/m7-353): sqlc queries for album cover enrichment
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
-- M7 #353: album cover enrichment queries.
|
||||
|
||||
-- name: ListAlbumsMissingCover :many
|
||||
-- Albums where cover_art_source has never been set. Used by the boot
|
||||
-- backfill and post-scan enrichment passes. LIMIT supplied by caller.
|
||||
SELECT a.id, a.mbid, a.title, a.artist_id
|
||||
FROM albums a
|
||||
WHERE a.cover_art_source IS NULL
|
||||
ORDER BY a.created_at ASC
|
||||
LIMIT $1;
|
||||
|
||||
-- name: ListAlbumsRetryMissing :many
|
||||
-- Bulk-retry candidates: NULL (never tried) plus 'none' (tried, failed).
|
||||
-- Used by the admin "refetch missing covers" endpoint. LIMIT supplied.
|
||||
SELECT a.id, a.mbid, a.title, a.artist_id
|
||||
FROM albums a
|
||||
WHERE a.cover_art_source IS NULL OR a.cover_art_source = 'none'
|
||||
ORDER BY a.created_at ASC
|
||||
LIMIT $1;
|
||||
|
||||
-- name: GetAlbumWithFirstTrackPath :one
|
||||
-- Returns the album row and one of its track file paths (used to derive
|
||||
-- the album directory). Pick lowest position track for determinism.
|
||||
SELECT a.id, a.mbid, a.title, a.cover_art_path, a.cover_art_source,
|
||||
t.file_path AS track_file_path
|
||||
FROM albums a
|
||||
LEFT JOIN tracks t ON t.album_id = a.id
|
||||
WHERE a.id = $1
|
||||
ORDER BY t.disc_number NULLS LAST, t.track_number NULLS LAST, t.id
|
||||
LIMIT 1;
|
||||
|
||||
-- name: SetAlbumCover :exec
|
||||
-- Persist enrichment result. Pass cover_art_path = '' to clear (turns into NULL).
|
||||
UPDATE albums
|
||||
SET cover_art_path = NULLIF($2::text, ''),
|
||||
cover_art_source = $3
|
||||
WHERE id = $1;
|
||||
|
||||
-- name: ClearAlbumCover :exec
|
||||
-- Used by the admin retry endpoint to wipe state before re-running the
|
||||
-- enricher. Sets both fields to NULL.
|
||||
UPDATE albums
|
||||
SET cover_art_path = NULL,
|
||||
cover_art_source = NULL
|
||||
WHERE id = $1;
|
||||
|
||||
-- name: CountAlbumCoverSources :one
|
||||
-- Diagnostic for the admin overview: counts by source, including NULL.
|
||||
-- Returns one row with named tallies.
|
||||
SELECT
|
||||
COUNT(*) FILTER (WHERE cover_art_source IS NULL) ::bigint AS untried,
|
||||
COUNT(*) FILTER (WHERE cover_art_source = 'sidecar') ::bigint AS sidecar,
|
||||
COUNT(*) FILTER (WHERE cover_art_source = 'embedded')::bigint AS embedded,
|
||||
COUNT(*) FILTER (WHERE cover_art_source = 'mbcaa') ::bigint AS mbcaa,
|
||||
COUNT(*) FILTER (WHERE cover_art_source = 'none') ::bigint AS none
|
||||
FROM albums;
|
||||
Reference in New Issue
Block a user