diff --git a/internal/db/dbq/albums.sql.go b/internal/db/dbq/albums.sql.go new file mode 100644 index 00000000..f0c1b3f2 --- /dev/null +++ b/internal/db/dbq/albums.sql.go @@ -0,0 +1,114 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.27.0 +// source: albums.sql + +package dbq + +import ( + "context" + + "github.com/jackc/pgx/v5/pgtype" +) + +const getAlbumByID = `-- name: GetAlbumByID :one +SELECT id, title, sort_title, artist_id, release_date, mbid, cover_art_path, created_at, updated_at FROM albums WHERE id = $1 +` + +func (q *Queries) GetAlbumByID(ctx context.Context, id pgtype.UUID) (Album, error) { + row := q.db.QueryRow(ctx, getAlbumByID, id) + var i Album + err := row.Scan( + &i.ID, + &i.Title, + &i.SortTitle, + &i.ArtistID, + &i.ReleaseDate, + &i.Mbid, + &i.CoverArtPath, + &i.CreatedAt, + &i.UpdatedAt, + ) + return i, err +} + +const listAlbumsByArtist = `-- name: ListAlbumsByArtist :many +SELECT id, title, sort_title, artist_id, release_date, mbid, cover_art_path, created_at, updated_at FROM albums WHERE artist_id = $1 ORDER BY release_date NULLS LAST, sort_title +` + +func (q *Queries) ListAlbumsByArtist(ctx context.Context, artistID pgtype.UUID) ([]Album, error) { + rows, err := q.db.Query(ctx, listAlbumsByArtist, artistID) + if err != nil { + return nil, err + } + defer rows.Close() + var items []Album + for rows.Next() { + var i Album + if err := rows.Scan( + &i.ID, + &i.Title, + &i.SortTitle, + &i.ArtistID, + &i.ReleaseDate, + &i.Mbid, + &i.CoverArtPath, + &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 upsertAlbum = `-- name: UpsertAlbum :one +INSERT INTO albums (title, sort_title, artist_id, release_date, mbid, cover_art_path) +VALUES ($1, $2, $3, $4, $5, $6) +ON CONFLICT (mbid) WHERE mbid IS NOT NULL +DO UPDATE SET + title = EXCLUDED.title, + sort_title = EXCLUDED.sort_title, + artist_id = EXCLUDED.artist_id, + release_date = EXCLUDED.release_date, + cover_art_path = EXCLUDED.cover_art_path, + updated_at = now() +RETURNING id, title, sort_title, artist_id, release_date, mbid, cover_art_path, created_at, updated_at +` + +type UpsertAlbumParams struct { + Title string + SortTitle string + ArtistID pgtype.UUID + ReleaseDate pgtype.Date + Mbid *string + CoverArtPath *string +} + +func (q *Queries) UpsertAlbum(ctx context.Context, arg UpsertAlbumParams) (Album, error) { + row := q.db.QueryRow(ctx, upsertAlbum, + arg.Title, + arg.SortTitle, + arg.ArtistID, + arg.ReleaseDate, + arg.Mbid, + arg.CoverArtPath, + ) + var i Album + err := row.Scan( + &i.ID, + &i.Title, + &i.SortTitle, + &i.ArtistID, + &i.ReleaseDate, + &i.Mbid, + &i.CoverArtPath, + &i.CreatedAt, + &i.UpdatedAt, + ) + return i, err +}