Return matching_records list from tracks_with_record_info_query
Replace scalar collected_record_id/wishlisted_record_id subqueries with a single matching_records JSON array grouped by release group (records.musicbrainz_id). Add parse_matching_records/1 for JSON parsing and derive_legacy_record_ids/2 as a temporary bridge for existing templates. Update tests to use shared musicbrainz_id fixtures.
This commit is contained in:
@@ -356,8 +356,12 @@ defmodule MusicLibrary.ListeningStats do
|
||||
'cover_hash', r.cover_hash\
|
||||
)) \
|
||||
FROM records r \
|
||||
JOIN record_releases rr ON rr.record_id = r.id \
|
||||
WHERE rr.release_id = (? ->> '$.musicbrainz_id'))\
|
||||
WHERE r.musicbrainz_id = (\
|
||||
SELECT r2.musicbrainz_id FROM records r2 \
|
||||
INNER JOIN record_releases rr ON rr.record_id = r2.id \
|
||||
WHERE rr.release_id = (? ->> '$.musicbrainz_id') \
|
||||
LIMIT 1\
|
||||
))\
|
||||
""",
|
||||
t.album
|
||||
),
|
||||
@@ -365,8 +369,10 @@ defmodule MusicLibrary.ListeningStats do
|
||||
fragment(
|
||||
"""
|
||||
(SELECT min(ar.musicbrainz_id) FROM artist_records ar \
|
||||
WHERE ar.record_id = (\
|
||||
SELECT rr.record_id FROM record_releases rr \
|
||||
INNER JOIN records r ON r.id = ar.record_id \
|
||||
WHERE r.musicbrainz_id = (\
|
||||
SELECT r2.musicbrainz_id FROM records r2 \
|
||||
INNER JOIN record_releases rr ON rr.record_id = r2.id \
|
||||
WHERE rr.release_id = (? ->> '$.musicbrainz_id') \
|
||||
LIMIT 1\
|
||||
))\
|
||||
@@ -377,10 +383,13 @@ defmodule MusicLibrary.ListeningStats do
|
||||
fragment(
|
||||
"""
|
||||
(SELECT r.cover_hash FROM records r \
|
||||
JOIN record_releases rr ON rr.record_id = r.id \
|
||||
WHERE r.musicbrainz_id = (\
|
||||
SELECT r2.musicbrainz_id FROM records r2 \
|
||||
INNER JOIN record_releases rr ON rr.record_id = r2.id \
|
||||
WHERE rr.release_id = (? ->> '$.musicbrainz_id') \
|
||||
AND r.purchased_at IS NOT NULL \
|
||||
ORDER BY r.id \
|
||||
LIMIT 1\
|
||||
) \
|
||||
ORDER BY (CASE WHEN r.purchased_at IS NOT NULL THEN 0 ELSE 1 END), r.id \
|
||||
LIMIT 1)\
|
||||
""",
|
||||
t.album
|
||||
|
||||
Reference in New Issue
Block a user