diff --git a/src/libs/database/impl/Artist.cpp b/src/libs/database/impl/Artist.cpp index cabdfc88..f09c17e0 100644 --- a/src/libs/database/impl/Artist.cpp +++ b/src/libs/database/impl/Artist.cpp @@ -199,6 +199,7 @@ namespace lms::db query.join("track t ON t.id = t_a_l.track_id"); query.join("track_artist_link t_a_l ON t_a_l.artist_id = a.id"); query.where("t.media_library_id = ?").bind(library); + query.groupBy("a.id"); } utils::forEachQueryResult(query, [&](const Artist::pointer& artist) diff --git a/src/libs/database/impl/Release.cpp b/src/libs/database/impl/Release.cpp index 8fb77601..8ff75a0b 100644 --- a/src/libs/database/impl/Release.cpp +++ b/src/libs/database/impl/Release.cpp @@ -296,6 +296,7 @@ namespace lms::db { query.join("track t ON t.release_id = r.id"); query.where("t.media_library_id = ?").bind(library); + query.groupBy("r.id"); } utils::forEachQueryResult(query, [&](const Release::pointer& release) diff --git a/src/libs/database/test/Artist.cpp b/src/libs/database/test/Artist.cpp index bff637df..11828a30 100644 --- a/src/libs/database/test/Artist.cpp +++ b/src/libs/database/test/Artist.cpp @@ -80,7 +80,8 @@ namespace lms::db::tests TEST_F(DatabaseFixture, Artist_findByRangedIdBased) { ScopedTrack track1{ session, "MyTrackFile1" }; - ScopedTrack track2{ session, "MyTrackFile2" }; + ScopedTrack track2a{ session, "MyTrackFile2a" }; + ScopedTrack track2b{ session, "MyTrackFile2b" }; ScopedTrack track3{ session, "MyTrackFile3" }; ScopedArtist artist1{ session, "MyArtist1" }; ScopedArtist artist2{ session, "MyArtist2" }; @@ -90,9 +91,11 @@ namespace lms::db::tests { auto transaction{ session.createWriteTransaction() }; - track2.get().modify()->setMediaLibrary(library.get()); + track2a.get().modify()->setMediaLibrary(library.get()); + track2b.get().modify()->setMediaLibrary(library.get()); TrackArtistLink::create(session, track1.get(), artist1.get(), TrackArtistLinkType::Artist); - TrackArtistLink::create(session, track2.get(), artist2.get(), TrackArtistLinkType::Artist); + TrackArtistLink::create(session, track2a.get(), artist2.get(), TrackArtistLinkType::Artist); + TrackArtistLink::create(session, track2b.get(), artist2.get(), TrackArtistLinkType::Artist); TrackArtistLink::create(session, track3.get(), artist3.get(), TrackArtistLinkType::Artist); } diff --git a/src/libs/database/test/Release.cpp b/src/libs/database/test/Release.cpp index 89d3fade..9bf48e14 100644 --- a/src/libs/database/test/Release.cpp +++ b/src/libs/database/test/Release.cpp @@ -77,7 +77,8 @@ namespace lms::db::tests TEST_F(DatabaseFixture, Release_findByRangedIdBased) { ScopedTrack track1{ session, "MyTrackFile1" }; - ScopedTrack track2{ session, "MyTrackFile2" }; + ScopedTrack track2a{ session, "MyTrackFile2a" }; + ScopedTrack track2b{ session, "MyTrackFile2b" }; ScopedTrack track3{ session, "MyTrackFile3" }; ScopedRelease release1{ session, "MyRelease1" }; ScopedRelease release2{ session, "MyRelease2" }; @@ -87,9 +88,11 @@ namespace lms::db::tests { auto transaction{ session.createWriteTransaction() }; - track2.get().modify()->setMediaLibrary(library.get()); + track2a.get().modify()->setMediaLibrary(library.get()); + track2b.get().modify()->setMediaLibrary(library.get()); track1.get().modify()->setRelease(release1.get()); - track2.get().modify()->setRelease(release2.get()); + track2a.get().modify()->setRelease(release2.get()); + track2b.get().modify()->setRelease(release2.get()); track3.get().modify()->setRelease(release3.get()); }