feat(db/m7-art-providers): migration 0020 + provider-hash queries
Relaxes the artists/albums art_source CHECK constraints to allow the new 'deezer' and 'lastfm' source values alongside the existing accepted set. Adds cover_art_sources_meta.last_registered_providers_hash for the boot-time auto-bump detection: when the registered-provider set changes between deploys, we bump current_version once so 'none' rows become eligible for retry against the new chain. Two sqlc queries added: GetCoverArtProvidersHash reads the stored hash; BumpVersionAndSetProvidersHash atomically increments the version and stores a new hash, returning the new version. Both used by the boot logic in a later task.
This commit is contained in:
@@ -27,6 +27,38 @@ func (q *Queries) BumpSourcesVersion(ctx context.Context) (int32, error) {
|
||||
return current_version, err
|
||||
}
|
||||
|
||||
const bumpVersionAndSetProvidersHash = `-- name: BumpVersionAndSetProvidersHash :one
|
||||
UPDATE cover_art_sources_meta
|
||||
SET current_version = current_version + 1,
|
||||
last_registered_providers_hash = $1
|
||||
WHERE id = true
|
||||
RETURNING current_version
|
||||
`
|
||||
|
||||
// Atomically increments the version and stores the new provider-set
|
||||
// hash. Called at boot when the registered-provider set has changed
|
||||
// since the last start, so 'none' rows become eligible for retry.
|
||||
// RETURNING gives the new version without a follow-up SELECT.
|
||||
func (q *Queries) BumpVersionAndSetProvidersHash(ctx context.Context, lastRegisteredProvidersHash string) (int32, error) {
|
||||
row := q.db.QueryRow(ctx, bumpVersionAndSetProvidersHash, lastRegisteredProvidersHash)
|
||||
var current_version int32
|
||||
err := row.Scan(¤t_version)
|
||||
return current_version, err
|
||||
}
|
||||
|
||||
const getCoverArtProvidersHash = `-- name: GetCoverArtProvidersHash :one
|
||||
SELECT last_registered_providers_hash
|
||||
FROM cover_art_sources_meta
|
||||
WHERE id = true
|
||||
`
|
||||
|
||||
func (q *Queries) GetCoverArtProvidersHash(ctx context.Context) (string, error) {
|
||||
row := q.db.QueryRow(ctx, getCoverArtProvidersHash)
|
||||
var last_registered_providers_hash string
|
||||
err := row.Scan(&last_registered_providers_hash)
|
||||
return last_registered_providers_hash, err
|
||||
}
|
||||
|
||||
const getCurrentSourcesVersion = `-- name: GetCurrentSourcesVersion :one
|
||||
SELECT current_version FROM cover_art_sources_meta WHERE id = true
|
||||
`
|
||||
|
||||
Reference in New Issue
Block a user