album artist gets populated with artist as fallback (frontend also uses this as display name fallback for albums). added scroll position persistence when switching main views. also added frontend cache for faster switching.
275 lines
6.8 KiB
Go
275 lines
6.8 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.30.0
|
|
// source: release_groups.sql
|
|
|
|
package sqlcgen
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
)
|
|
|
|
const createReleaseGroup = `-- name: CreateReleaseGroup :one
|
|
INSERT INTO release_groups (name) VALUES (?)
|
|
RETURNING id, name, cover_art_id, album_artist_credit_id, year, total_tracks, total_discs
|
|
`
|
|
|
|
func (q *Queries) CreateReleaseGroup(ctx context.Context, name string) (ReleaseGroup, error) {
|
|
row := q.db.QueryRowContext(ctx, createReleaseGroup, name)
|
|
var i ReleaseGroup
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.Name,
|
|
&i.CoverArtID,
|
|
&i.AlbumArtistCreditID,
|
|
&i.Year,
|
|
&i.TotalTracks,
|
|
&i.TotalDiscs,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const createReleaseGroupFull = `-- name: CreateReleaseGroupFull :one
|
|
INSERT INTO release_groups (
|
|
name, cover_art_id, album_artist_credit_id, year, total_tracks, total_discs
|
|
) VALUES (?, ?, ?, ?, ?, ?)
|
|
RETURNING id, name, cover_art_id, album_artist_credit_id, year, total_tracks, total_discs
|
|
`
|
|
|
|
type CreateReleaseGroupFullParams struct {
|
|
Name string
|
|
CoverArtID sql.NullInt64
|
|
AlbumArtistCreditID sql.NullInt64
|
|
Year sql.NullInt64
|
|
TotalTracks sql.NullInt64
|
|
TotalDiscs sql.NullInt64
|
|
}
|
|
|
|
func (q *Queries) CreateReleaseGroupFull(ctx context.Context, arg CreateReleaseGroupFullParams) (ReleaseGroup, error) {
|
|
row := q.db.QueryRowContext(ctx, createReleaseGroupFull,
|
|
arg.Name,
|
|
arg.CoverArtID,
|
|
arg.AlbumArtistCreditID,
|
|
arg.Year,
|
|
arg.TotalTracks,
|
|
arg.TotalDiscs,
|
|
)
|
|
var i ReleaseGroup
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.Name,
|
|
&i.CoverArtID,
|
|
&i.AlbumArtistCreditID,
|
|
&i.Year,
|
|
&i.TotalTracks,
|
|
&i.TotalDiscs,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const deleteReleaseGroup = `-- name: DeleteReleaseGroup :exec
|
|
DELETE FROM release_groups
|
|
WHERE id = ?
|
|
`
|
|
|
|
func (q *Queries) DeleteReleaseGroup(ctx context.Context, id int64) error {
|
|
_, err := q.db.ExecContext(ctx, deleteReleaseGroup, id)
|
|
return err
|
|
}
|
|
|
|
const getAllAlbumsWithDetails = `-- name: GetAllAlbumsWithDetails :many
|
|
SELECT
|
|
rg.id,
|
|
rg.name,
|
|
rg.year,
|
|
COALESCE(ac.text, fallback_ac.text, '') as artist_name,
|
|
COALESCE(ca.file_path, '') as cover_art_path
|
|
FROM release_groups rg
|
|
LEFT JOIN artist_credit ac ON rg.album_artist_credit_id = ac.id
|
|
LEFT JOIN cover_art ca ON rg.cover_art_id = ca.id
|
|
LEFT JOIN (
|
|
SELECT rgr.release_group_id, ac2.text
|
|
FROM release_group_recordings rgr
|
|
JOIN recordings rec ON rec.id = rgr.recording_id
|
|
JOIN artist_credit ac2 ON ac2.id = rec.artist_credit_id
|
|
GROUP BY rgr.release_group_id
|
|
) fallback_ac ON fallback_ac.release_group_id = rg.id
|
|
ORDER BY rg.name
|
|
`
|
|
|
|
type GetAllAlbumsWithDetailsRow struct {
|
|
ID int64
|
|
Name string
|
|
Year sql.NullInt64
|
|
ArtistName string
|
|
CoverArtPath string
|
|
}
|
|
|
|
func (q *Queries) GetAllAlbumsWithDetails(ctx context.Context) ([]GetAllAlbumsWithDetailsRow, error) {
|
|
rows, err := q.db.QueryContext(ctx, getAllAlbumsWithDetails)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []GetAllAlbumsWithDetailsRow
|
|
for rows.Next() {
|
|
var i GetAllAlbumsWithDetailsRow
|
|
if err := rows.Scan(
|
|
&i.ID,
|
|
&i.Name,
|
|
&i.Year,
|
|
&i.ArtistName,
|
|
&i.CoverArtPath,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const getAllReleaseGroups = `-- name: GetAllReleaseGroups :many
|
|
SELECT id, name, cover_art_id, album_artist_credit_id, year, total_tracks, total_discs FROM release_groups
|
|
ORDER BY name
|
|
`
|
|
|
|
func (q *Queries) GetAllReleaseGroups(ctx context.Context) ([]ReleaseGroup, error) {
|
|
rows, err := q.db.QueryContext(ctx, getAllReleaseGroups)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []ReleaseGroup
|
|
for rows.Next() {
|
|
var i ReleaseGroup
|
|
if err := rows.Scan(
|
|
&i.ID,
|
|
&i.Name,
|
|
&i.CoverArtID,
|
|
&i.AlbumArtistCreditID,
|
|
&i.Year,
|
|
&i.TotalTracks,
|
|
&i.TotalDiscs,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const getReleaseGroup = `-- name: GetReleaseGroup :one
|
|
SELECT id, name, cover_art_id, album_artist_credit_id, year, total_tracks, total_discs FROM release_groups
|
|
WHERE id = ? LIMIT 1
|
|
`
|
|
|
|
func (q *Queries) GetReleaseGroup(ctx context.Context, id int64) (ReleaseGroup, error) {
|
|
row := q.db.QueryRowContext(ctx, getReleaseGroup, id)
|
|
var i ReleaseGroup
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.Name,
|
|
&i.CoverArtID,
|
|
&i.AlbumArtistCreditID,
|
|
&i.Year,
|
|
&i.TotalTracks,
|
|
&i.TotalDiscs,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const getReleaseGroupByName = `-- name: GetReleaseGroupByName :one
|
|
SELECT id, name, cover_art_id, album_artist_credit_id, year, total_tracks, total_discs FROM release_groups
|
|
WHERE name = ? LIMIT 1
|
|
`
|
|
|
|
func (q *Queries) GetReleaseGroupByName(ctx context.Context, name string) (ReleaseGroup, error) {
|
|
row := q.db.QueryRowContext(ctx, getReleaseGroupByName, name)
|
|
var i ReleaseGroup
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.Name,
|
|
&i.CoverArtID,
|
|
&i.AlbumArtistCreditID,
|
|
&i.Year,
|
|
&i.TotalTracks,
|
|
&i.TotalDiscs,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const updateReleaseGroup = `-- name: UpdateReleaseGroup :exec
|
|
UPDATE release_groups
|
|
SET name = ?
|
|
WHERE id = ?
|
|
`
|
|
|
|
type UpdateReleaseGroupParams struct {
|
|
Name string
|
|
ID int64
|
|
}
|
|
|
|
func (q *Queries) UpdateReleaseGroup(ctx context.Context, arg UpdateReleaseGroupParams) error {
|
|
_, err := q.db.ExecContext(ctx, updateReleaseGroup, arg.Name, arg.ID)
|
|
return err
|
|
}
|
|
|
|
const updateReleaseGroupCoverArt = `-- name: UpdateReleaseGroupCoverArt :exec
|
|
UPDATE release_groups
|
|
SET cover_art_id = ?
|
|
WHERE id = ?
|
|
`
|
|
|
|
type UpdateReleaseGroupCoverArtParams struct {
|
|
CoverArtID sql.NullInt64
|
|
ID int64
|
|
}
|
|
|
|
func (q *Queries) UpdateReleaseGroupCoverArt(ctx context.Context, arg UpdateReleaseGroupCoverArtParams) error {
|
|
_, err := q.db.ExecContext(ctx, updateReleaseGroupCoverArt, arg.CoverArtID, arg.ID)
|
|
return err
|
|
}
|
|
|
|
const upsertReleaseGroup = `-- name: UpsertReleaseGroup :one
|
|
INSERT INTO release_groups (name, album_artist_credit_id, year)
|
|
VALUES (?, ?, ?)
|
|
ON CONFLICT(name) DO UPDATE SET
|
|
album_artist_credit_id = COALESCE(excluded.album_artist_credit_id, release_groups.album_artist_credit_id),
|
|
year = COALESCE(excluded.year, release_groups.year)
|
|
RETURNING id, name, cover_art_id, album_artist_credit_id, year, total_tracks, total_discs
|
|
`
|
|
|
|
type UpsertReleaseGroupParams struct {
|
|
Name string
|
|
AlbumArtistCreditID sql.NullInt64
|
|
Year sql.NullInt64
|
|
}
|
|
|
|
func (q *Queries) UpsertReleaseGroup(ctx context.Context, arg UpsertReleaseGroupParams) (ReleaseGroup, error) {
|
|
row := q.db.QueryRowContext(ctx, upsertReleaseGroup, arg.Name, arg.AlbumArtistCreditID, arg.Year)
|
|
var i ReleaseGroup
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.Name,
|
|
&i.CoverArtID,
|
|
&i.AlbumArtistCreditID,
|
|
&i.Year,
|
|
&i.TotalTracks,
|
|
&i.TotalDiscs,
|
|
)
|
|
return i, err
|
|
}
|