mirror of
https://github.com/gabehf/Koito.git
synced 2026-03-15 10:25:55 -07:00
fix: set first artist listed as primary by default (#81)
This commit is contained in:
parent
cd31b6f2d8
commit
70f5198781
17 changed files with 46 additions and 26 deletions
|
|
@ -74,8 +74,8 @@ JOIN artist_releases ar ON r.id = ar.release_id
|
||||||
WHERE ar.artist_id = $1;
|
WHERE ar.artist_id = $1;
|
||||||
|
|
||||||
-- name: AssociateArtistToRelease :exec
|
-- name: AssociateArtistToRelease :exec
|
||||||
INSERT INTO artist_releases (artist_id, release_id)
|
INSERT INTO artist_releases (artist_id, release_id, is_primary)
|
||||||
VALUES ($1, $2)
|
VALUES ($1, $2, $3)
|
||||||
ON CONFLICT DO NOTHING;
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
-- name: GetReleasesWithoutImages :many
|
-- name: GetReleasesWithoutImages :many
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,8 @@ VALUES ($1, $2, $3)
|
||||||
RETURNING *;
|
RETURNING *;
|
||||||
|
|
||||||
-- name: AssociateArtistToTrack :exec
|
-- name: AssociateArtistToTrack :exec
|
||||||
INSERT INTO artist_tracks (artist_id, track_id)
|
INSERT INTO artist_tracks (artist_id, track_id, is_primary)
|
||||||
VALUES ($1, $2)
|
VALUES ($1, $2, $3)
|
||||||
ON CONFLICT DO NOTHING;
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
-- name: GetTrack :one
|
-- name: GetTrack :one
|
||||||
|
|
|
||||||
|
|
@ -203,6 +203,22 @@ func TestSubmitListen_CreateAllNoMbzIDsNoArtistNamesNoReleaseTitle(t *testing.T)
|
||||||
)`, "Madeline Kenney")
|
)`, "Madeline Kenney")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.True(t, exists, "expected featured artist to be created")
|
assert.True(t, exists, "expected featured artist to be created")
|
||||||
|
|
||||||
|
// assert that Rat Tally is the primary artist
|
||||||
|
exists, err = store.RowExists(ctx, `
|
||||||
|
SELECT EXISTS (
|
||||||
|
SELECT 1 FROM artist_tracks
|
||||||
|
WHERE artist_id = $1 AND is_primary = $2
|
||||||
|
)`, 1, true)
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.True(t, exists, "expected primary artist to be marked as primary for track")
|
||||||
|
exists, err = store.RowExists(ctx, `
|
||||||
|
SELECT EXISTS (
|
||||||
|
SELECT 1 FROM artist_releases
|
||||||
|
WHERE artist_id = $1 AND is_primary = $2
|
||||||
|
)`, 1, true)
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.True(t, exists, "expected primary artist to be marked as primary for release")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSubmitListen_MatchAllMbzIDs(t *testing.T) {
|
func TestSubmitListen_MatchAllMbzIDs(t *testing.T) {
|
||||||
|
|
|
||||||
|
|
@ -144,6 +144,7 @@ func (d *Psql) SaveAlbum(ctx context.Context, opts db.SaveAlbumOpts) (*models.Al
|
||||||
err = qtx.AssociateArtistToRelease(ctx, repository.AssociateArtistToReleaseParams{
|
err = qtx.AssociateArtistToRelease(ctx, repository.AssociateArtistToReleaseParams{
|
||||||
ArtistID: artistId,
|
ArtistID: artistId,
|
||||||
ReleaseID: r.ID,
|
ReleaseID: r.ID,
|
||||||
|
IsPrimary: opts.ArtistIDs[0] == artistId,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("SaveAlbum: AssociateArtistToRelease: %w", err)
|
return nil, fmt.Errorf("SaveAlbum: AssociateArtistToRelease: %w", err)
|
||||||
|
|
|
||||||
|
|
@ -132,8 +132,9 @@ func (d *Psql) SaveTrack(ctx context.Context, opts db.SaveTrackOpts) (*models.Tr
|
||||||
// insert associated artists
|
// insert associated artists
|
||||||
for _, aid := range opts.ArtistIDs {
|
for _, aid := range opts.ArtistIDs {
|
||||||
err = qtx.AssociateArtistToTrack(ctx, repository.AssociateArtistToTrackParams{
|
err = qtx.AssociateArtistToTrack(ctx, repository.AssociateArtistToTrackParams{
|
||||||
ArtistID: aid,
|
ArtistID: aid,
|
||||||
TrackID: trackRow.ID,
|
TrackID: trackRow.ID,
|
||||||
|
IsPrimary: opts.ArtistIDs[0] == aid,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("SaveTrack: AssociateArtistToTrack: %w", err)
|
return nil, fmt.Errorf("SaveTrack: AssociateArtistToTrack: %w", err)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Code generated by sqlc. DO NOT EDIT.
|
// Code generated by sqlc. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// sqlc v1.29.0
|
// sqlc v1.30.0
|
||||||
// source: alias.sql
|
// source: alias.sql
|
||||||
|
|
||||||
package repository
|
package repository
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Code generated by sqlc. DO NOT EDIT.
|
// Code generated by sqlc. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// sqlc v1.29.0
|
// sqlc v1.30.0
|
||||||
// source: artist.sql
|
// source: artist.sql
|
||||||
|
|
||||||
package repository
|
package repository
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Code generated by sqlc. DO NOT EDIT.
|
// Code generated by sqlc. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// sqlc v1.29.0
|
// sqlc v1.30.0
|
||||||
|
|
||||||
package repository
|
package repository
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Code generated by sqlc. DO NOT EDIT.
|
// Code generated by sqlc. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// sqlc v1.29.0
|
// sqlc v1.30.0
|
||||||
// source: etc.sql
|
// source: etc.sql
|
||||||
|
|
||||||
package repository
|
package repository
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Code generated by sqlc. DO NOT EDIT.
|
// Code generated by sqlc. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// sqlc v1.29.0
|
// sqlc v1.30.0
|
||||||
// source: listen.sql
|
// source: listen.sql
|
||||||
|
|
||||||
package repository
|
package repository
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Code generated by sqlc. DO NOT EDIT.
|
// Code generated by sqlc. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// sqlc v1.29.0
|
// sqlc v1.30.0
|
||||||
|
|
||||||
package repository
|
package repository
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Code generated by sqlc. DO NOT EDIT.
|
// Code generated by sqlc. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// sqlc v1.29.0
|
// sqlc v1.30.0
|
||||||
// source: release.sql
|
// source: release.sql
|
||||||
|
|
||||||
package repository
|
package repository
|
||||||
|
|
@ -14,18 +14,19 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const associateArtistToRelease = `-- name: AssociateArtistToRelease :exec
|
const associateArtistToRelease = `-- name: AssociateArtistToRelease :exec
|
||||||
INSERT INTO artist_releases (artist_id, release_id)
|
INSERT INTO artist_releases (artist_id, release_id, is_primary)
|
||||||
VALUES ($1, $2)
|
VALUES ($1, $2, $3)
|
||||||
ON CONFLICT DO NOTHING
|
ON CONFLICT DO NOTHING
|
||||||
`
|
`
|
||||||
|
|
||||||
type AssociateArtistToReleaseParams struct {
|
type AssociateArtistToReleaseParams struct {
|
||||||
ArtistID int32
|
ArtistID int32
|
||||||
ReleaseID int32
|
ReleaseID int32
|
||||||
|
IsPrimary bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (q *Queries) AssociateArtistToRelease(ctx context.Context, arg AssociateArtistToReleaseParams) error {
|
func (q *Queries) AssociateArtistToRelease(ctx context.Context, arg AssociateArtistToReleaseParams) error {
|
||||||
_, err := q.db.Exec(ctx, associateArtistToRelease, arg.ArtistID, arg.ReleaseID)
|
_, err := q.db.Exec(ctx, associateArtistToRelease, arg.ArtistID, arg.ReleaseID, arg.IsPrimary)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Code generated by sqlc. DO NOT EDIT.
|
// Code generated by sqlc. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// sqlc v1.29.0
|
// sqlc v1.30.0
|
||||||
// source: search.sql
|
// source: search.sql
|
||||||
|
|
||||||
package repository
|
package repository
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Code generated by sqlc. DO NOT EDIT.
|
// Code generated by sqlc. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// sqlc v1.29.0
|
// sqlc v1.30.0
|
||||||
// source: sessions.sql
|
// source: sessions.sql
|
||||||
|
|
||||||
package repository
|
package repository
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Code generated by sqlc. DO NOT EDIT.
|
// Code generated by sqlc. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// sqlc v1.29.0
|
// sqlc v1.30.0
|
||||||
// source: track.sql
|
// source: track.sql
|
||||||
|
|
||||||
package repository
|
package repository
|
||||||
|
|
@ -13,18 +13,19 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const associateArtistToTrack = `-- name: AssociateArtistToTrack :exec
|
const associateArtistToTrack = `-- name: AssociateArtistToTrack :exec
|
||||||
INSERT INTO artist_tracks (artist_id, track_id)
|
INSERT INTO artist_tracks (artist_id, track_id, is_primary)
|
||||||
VALUES ($1, $2)
|
VALUES ($1, $2, $3)
|
||||||
ON CONFLICT DO NOTHING
|
ON CONFLICT DO NOTHING
|
||||||
`
|
`
|
||||||
|
|
||||||
type AssociateArtistToTrackParams struct {
|
type AssociateArtistToTrackParams struct {
|
||||||
ArtistID int32
|
ArtistID int32
|
||||||
TrackID int32
|
TrackID int32
|
||||||
|
IsPrimary bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (q *Queries) AssociateArtistToTrack(ctx context.Context, arg AssociateArtistToTrackParams) error {
|
func (q *Queries) AssociateArtistToTrack(ctx context.Context, arg AssociateArtistToTrackParams) error {
|
||||||
_, err := q.db.Exec(ctx, associateArtistToTrack, arg.ArtistID, arg.TrackID)
|
_, err := q.db.Exec(ctx, associateArtistToTrack, arg.ArtistID, arg.TrackID, arg.IsPrimary)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Code generated by sqlc. DO NOT EDIT.
|
// Code generated by sqlc. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// sqlc v1.29.0
|
// sqlc v1.30.0
|
||||||
// source: users.sql
|
// source: users.sql
|
||||||
|
|
||||||
package repository
|
package repository
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Code generated by sqlc. DO NOT EDIT.
|
// Code generated by sqlc. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// sqlc v1.29.0
|
// sqlc v1.30.0
|
||||||
// source: year.sql
|
// source: year.sql
|
||||||
|
|
||||||
package repository
|
package repository
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue