9a705d0ba4
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.
164 lines
5.1 KiB
Go
164 lines
5.1 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.31.1
|
|
// source: coverart_settings.sql
|
|
|
|
package dbq
|
|
|
|
import (
|
|
"context"
|
|
)
|
|
|
|
const bumpSourcesVersion = `-- name: BumpSourcesVersion :one
|
|
UPDATE cover_art_sources_meta
|
|
SET current_version = current_version + 1
|
|
WHERE id = true
|
|
RETURNING current_version
|
|
`
|
|
|
|
// Increments and returns the new version. Called by SettingsService
|
|
// only when the *enabled set* changes (not on key/display_order
|
|
// changes). RETURNING gives the new value back so the handler can
|
|
// include it in the response without a follow-up SELECT.
|
|
func (q *Queries) BumpSourcesVersion(ctx context.Context) (int32, error) {
|
|
row := q.db.QueryRow(ctx, bumpSourcesVersion)
|
|
var current_version int32
|
|
err := row.Scan(¤t_version)
|
|
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
|
|
`
|
|
|
|
func (q *Queries) GetCurrentSourcesVersion(ctx context.Context) (int32, error) {
|
|
row := q.db.QueryRow(ctx, getCurrentSourcesVersion)
|
|
var current_version int32
|
|
err := row.Scan(¤t_version)
|
|
return current_version, err
|
|
}
|
|
|
|
const listProviderSettings = `-- name: ListProviderSettings :many
|
|
|
|
SELECT provider_id, enabled, api_key, display_order, created_at, updated_at
|
|
FROM cover_art_provider_settings
|
|
ORDER BY display_order, provider_id
|
|
`
|
|
|
|
// M7 cover-sources: queries for the cover_art_provider_settings table
|
|
// and the cover_art_sources_meta singleton. The SettingsService
|
|
// consumes these.
|
|
// Returns all rows from cover_art_provider_settings. Used by the
|
|
// SettingsService at boot for reconciliation and by the admin GET
|
|
// handler.
|
|
func (q *Queries) ListProviderSettings(ctx context.Context) ([]CoverArtProviderSetting, error) {
|
|
rows, err := q.db.Query(ctx, listProviderSettings)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []CoverArtProviderSetting
|
|
for rows.Next() {
|
|
var i CoverArtProviderSetting
|
|
if err := rows.Scan(
|
|
&i.ProviderID,
|
|
&i.Enabled,
|
|
&i.ApiKey,
|
|
&i.DisplayOrder,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const updateProviderSettings = `-- name: UpdateProviderSettings :exec
|
|
UPDATE cover_art_provider_settings
|
|
SET enabled = COALESCE($2, enabled),
|
|
api_key = CASE WHEN $3::boolean THEN $4 ELSE api_key END,
|
|
updated_at = now()
|
|
WHERE provider_id = $1
|
|
`
|
|
|
|
type UpdateProviderSettingsParams struct {
|
|
ProviderID string
|
|
Enabled bool
|
|
Column3 bool
|
|
ApiKey *string
|
|
}
|
|
|
|
// Admin PATCH applies one or both fields. Pass NULL for enabled to
|
|
// leave it unchanged. Pass FALSE for the apiKeyChanged flag to leave
|
|
// the api_key unchanged regardless of apiKey value; pass TRUE with
|
|
// empty string to clear, or TRUE with non-empty to set.
|
|
func (q *Queries) UpdateProviderSettings(ctx context.Context, arg UpdateProviderSettingsParams) error {
|
|
_, err := q.db.Exec(ctx, updateProviderSettings,
|
|
arg.ProviderID,
|
|
arg.Enabled,
|
|
arg.Column3,
|
|
arg.ApiKey,
|
|
)
|
|
return err
|
|
}
|
|
|
|
const upsertProviderSettings = `-- name: UpsertProviderSettings :exec
|
|
INSERT INTO cover_art_provider_settings (provider_id, enabled, display_order)
|
|
VALUES ($1, $2, $3)
|
|
ON CONFLICT (provider_id) DO UPDATE
|
|
SET display_order = EXCLUDED.display_order,
|
|
updated_at = now()
|
|
`
|
|
|
|
type UpsertProviderSettingsParams struct {
|
|
ProviderID string
|
|
Enabled bool
|
|
DisplayOrder int32
|
|
}
|
|
|
|
// INSERT a default row for a newly-registered provider, or update an
|
|
// existing row's display_order on boot reconciliation. Does NOT
|
|
// overwrite enabled / api_key on conflict — the operator's settings
|
|
// persist across restarts.
|
|
func (q *Queries) UpsertProviderSettings(ctx context.Context, arg UpsertProviderSettingsParams) error {
|
|
_, err := q.db.Exec(ctx, upsertProviderSettings, arg.ProviderID, arg.Enabled, arg.DisplayOrder)
|
|
return err
|
|
}
|