feat(db/m7-cover-sources): SQL queries for provider settings + recheck
- Extends GetAlbumCoverageRollup's with_art FILTER to include 'theaudiodb' so F's coverage gauge surfaces TheAudioDB-found rows as with_art rather than silently undercounting. - Modifies ListAlbumsMissingCover to take the current sources_version as a parameter; eligibility now includes stale-'none' rows. - Adds SetAlbumCoverWithVersion (atomic write of path + source + version stamp) and the parallel SetArtistArtWithVersion + ClearArtistArtNone + ListArtistsMissingArt for the artist-art enricher. - New coverart_settings.sql with ListProviderSettings, UpsertProviderSettings (boot reconciliation, preserves operator values on conflict), UpdateProviderSettings (admin PATCH; tri- state api_key handling), GetCurrentSourcesVersion, BumpSourcesVersion (RETURNING the new value).
This commit is contained in:
@@ -11,7 +11,15 @@ DO UPDATE SET
|
||||
RETURNING *;
|
||||
|
||||
-- name: GetArtistByID :one
|
||||
SELECT * FROM artists WHERE id = $1;
|
||||
-- M7 cover-sources: enricher reads the artist's mbid + current art
|
||||
-- columns to drive eligibility check. (Modified from SELECT * to
|
||||
-- explicitly include the new artist_art_* columns added in migration
|
||||
-- 0018.)
|
||||
SELECT a.id, a.name, a.sort_name, a.mbid,
|
||||
a.artist_thumb_path, a.artist_fanart_path,
|
||||
a.artist_art_source, a.artist_art_sources_version
|
||||
FROM artists a
|
||||
WHERE a.id = $1;
|
||||
|
||||
-- name: GetArtistByName :one
|
||||
SELECT * FROM artists WHERE name = $1 LIMIT 1;
|
||||
@@ -83,3 +91,38 @@ UPDATE artists
|
||||
SET mbid = $2,
|
||||
updated_at = now()
|
||||
WHERE id = $1 AND mbid IS NULL;
|
||||
|
||||
-- name: ListArtistsMissingArt :many
|
||||
-- M7 cover-sources: returns artist rows the artist-art enricher should
|
||||
-- attempt. Eligible: artist_art_source IS NULL OR (= 'none' AND stale
|
||||
-- artist_art_sources_version). MBID-less artists are returned but the
|
||||
-- enricher skips them at the row.mbid == nil guard inside the chain.
|
||||
SELECT a.id
|
||||
FROM artists a
|
||||
WHERE a.artist_art_source IS NULL
|
||||
OR (a.artist_art_source = 'none' AND a.artist_art_sources_version != $1)
|
||||
ORDER BY a.created_at
|
||||
LIMIT $2;
|
||||
|
||||
-- name: SetArtistArtWithVersion :exec
|
||||
-- M7 cover-sources: records a successful or settled artist-art
|
||||
-- enrichment with the current sources_version stamp. thumb_path /
|
||||
-- fanart_path are NULL on a 'none' result, or independently NULL if
|
||||
-- the provider returned only one of the two image types (e.g.
|
||||
-- TheAudioDB had a thumb but no fanart for this artist).
|
||||
UPDATE artists
|
||||
SET artist_thumb_path = $2,
|
||||
artist_fanart_path = $3,
|
||||
artist_art_source = $4,
|
||||
artist_art_sources_version = $5,
|
||||
updated_at = now()
|
||||
WHERE id = $1;
|
||||
|
||||
-- name: ClearArtistArtNone :exec
|
||||
-- M7 cover-sources: parallel of ClearAlbumCoverNone. Used by the
|
||||
-- eligibility loop to flip stale 'none' rows back to NULL.
|
||||
UPDATE artists
|
||||
SET artist_art_source = NULL,
|
||||
updated_at = now()
|
||||
WHERE id = $1
|
||||
AND artist_art_source = 'none';
|
||||
|
||||
Reference in New Issue
Block a user