Fixed regression when removing an artwork
This commit is contained in:
@@ -329,14 +329,20 @@ namespace lms::db
|
|||||||
{
|
{
|
||||||
session.checkWriteTransaction();
|
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)
|
void Track::updatePreferredMediaArtwork(Session& session, TrackId trackId, ArtworkId artworkId)
|
||||||
{
|
{
|
||||||
session.checkWriteTransaction();
|
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
|
std::vector<Cluster::pointer> Track::getClusters() const
|
||||||
|
|||||||
@@ -21,8 +21,14 @@
|
|||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
|
#include "database/Artwork.hpp"
|
||||||
|
#include "database/Image.hpp"
|
||||||
|
|
||||||
namespace lms::db::tests
|
namespace lms::db::tests
|
||||||
{
|
{
|
||||||
|
using ScopedArtwork = ScopedEntity<db::Artwork>;
|
||||||
|
using ScopedImage = ScopedEntity<db::Image>;
|
||||||
|
|
||||||
TEST_F(DatabaseFixture, Track)
|
TEST_F(DatabaseFixture, Track)
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
@@ -439,4 +445,41 @@ namespace lms::db::tests
|
|||||||
EXPECT_EQ(tracks.results[3], track3.getId());
|
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
|
} // namespace lms::db::tests
|
||||||
Reference in New Issue
Block a user