Fixed regression when removing an artwork

This commit is contained in:
emeric
2025-06-21 18:37:36 +02:00
parent c95ae94c84
commit dd2f97903e
2 changed files with 51 additions and 2 deletions
+8 -2
View File
@@ -329,14 +329,20 @@ namespace lms::db
{
session.checkWriteTransaction();
utils::executeCommand(*session.getDboSession(), "UPDATE track SET preferred_artwork_id = ? WHERE id = ?", artworkId, trackId);
if (artworkId.isValid())
utils::executeCommand(*session.getDboSession(), "UPDATE track SET preferred_artwork_id = ? WHERE id = ?", artworkId, trackId);
else
utils::executeCommand(*session.getDboSession(), "UPDATE track SET preferred_artwork_id = NULL WHERE id = ?", trackId);
}
void Track::updatePreferredMediaArtwork(Session& session, TrackId trackId, ArtworkId artworkId)
{
session.checkWriteTransaction();
utils::executeCommand(*session.getDboSession(), "UPDATE track SET preferred_media_artwork_id = ? WHERE id = ?", artworkId, trackId);
if (artworkId.isValid())
utils::executeCommand(*session.getDboSession(), "UPDATE track SET preferred_media_artwork_id = ? WHERE id = ?", artworkId, trackId);
else
utils::executeCommand(*session.getDboSession(), "UPDATE track SET preferred_media_artwork_id = NULL WHERE id = ?", trackId);
}
std::vector<Cluster::pointer> Track::getClusters() const
+43
View File
@@ -21,8 +21,14 @@
#include <algorithm>
#include "database/Artwork.hpp"
#include "database/Image.hpp"
namespace lms::db::tests
{
using ScopedArtwork = ScopedEntity<db::Artwork>;
using ScopedImage = ScopedEntity<db::Image>;
TEST_F(DatabaseFixture, Track)
{
{
@@ -439,4 +445,41 @@ namespace lms::db::tests
EXPECT_EQ(tracks.results[3], track3.getId());
}
}
TEST_F(DatabaseFixture, Track_updateArtworks)
{
ScopedTrack track{ session };
{
auto transaction{ session.createReadTransaction() };
EXPECT_EQ(track->getPreferredArtwork(), Artwork::pointer{});
EXPECT_EQ(track->getPreferredMediaArtwork(), Artwork::pointer{});
}
ScopedImage image1{ session, "/image1.jpg" };
ScopedArtwork artwork1{ session, image1.lockAndGet() };
ScopedImage image2{ session, "/image2.jpg" };
ScopedArtwork artwork2{ session, image2.lockAndGet() };
{
auto transaction{ session.createWriteTransaction() };
Track::updatePreferredArtwork(session, track->getId(), artwork1->getId());
Track::updatePreferredMediaArtwork(session, track->getId(), artwork2->getId());
}
{
auto transaction{ session.createReadTransaction() };
EXPECT_EQ(track->getPreferredArtwork()->getId(), artwork1->getId());
EXPECT_EQ(track->getPreferredMediaArtwork()->getId(), artwork2->getId());
}
{
auto transaction{ session.createWriteTransaction() };
Track::updatePreferredArtwork(session, track->getId(), ArtworkId{});
Track::updatePreferredMediaArtwork(session, track->getId(), ArtworkId{});
}
{
auto transaction{ session.createReadTransaction() };
EXPECT_EQ(track->getPreferredArtwork(), Artwork::pointer{});
EXPECT_EQ(track->getPreferredMediaArtwork(), Artwork::pointer{});
}
}
} // namespace lms::db::tests