From 7c46d8358f03df505d55263ee9307de9410949fd Mon Sep 17 00:00:00 2001 From: bvandeusen Date: Sun, 19 Apr 2026 02:31:27 +0000 Subject: [PATCH] M1/#292: artist queries (upsert/get/list) --- internal/db/queries/artists.sql | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 internal/db/queries/artists.sql diff --git a/internal/db/queries/artists.sql b/internal/db/queries/artists.sql new file mode 100644 index 00000000..fb1b6695 --- /dev/null +++ b/internal/db/queries/artists.sql @@ -0,0 +1,20 @@ +-- name: UpsertArtist :one +-- Insert or update by mbid when present; otherwise by (name, sort_name). +-- Callers pass the canonical sort_name; scanner is responsible for derivation. +INSERT INTO artists (name, sort_name, mbid) +VALUES ($1, $2, $3) +ON CONFLICT (mbid) WHERE mbid IS NOT NULL +DO UPDATE SET + name = EXCLUDED.name, + sort_name = EXCLUDED.sort_name, + updated_at = now() +RETURNING *; + +-- name: GetArtistByID :one +SELECT * FROM artists WHERE id = $1; + +-- name: GetArtistByName :one +SELECT * FROM artists WHERE name = $1 LIMIT 1; + +-- name: ListArtists :many +SELECT * FROM artists ORDER BY sort_name;