Now resolve the preferred track artworks during scan steps

This commit is contained in:
emeric
2025-06-21 18:13:20 +02:00
parent a1533c4c8d
commit dd2aa49bb0
16 changed files with 704 additions and 176 deletions
+55
View File
@@ -23,6 +23,7 @@
#include "core/ILogger.hpp"
#include "database/Artist.hpp"
#include "database/Artwork.hpp"
#include "database/Cluster.hpp"
#include "database/Directory.hpp"
#include "database/MediaLibrary.hpp"
@@ -324,6 +325,20 @@ namespace lms::db
return utils::execRangeQuery<TrackId>(query, range);
}
void Track::updatePreferredArtwork(Session& session, TrackId trackId, ArtworkId artworkId)
{
session.checkWriteTransaction();
utils::executeCommand(*session.getDboSession(), "UPDATE track SET preferred_artwork_id = ? WHERE id = ?", artworkId, 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);
}
std::vector<Cluster::pointer> Track::getClusters() const
{
return utils::fetchQueryResults<Cluster::pointer>(_clusters.find());
@@ -338,6 +353,26 @@ namespace lms::db
return utils::fetchQueryResults(query);
}
ObjectPtr<MediaLibrary> Track::getMediaLibrary() const
{
return _mediaLibrary;
}
ObjectPtr<Directory> Track::getDirectory() const
{
return _directory;
}
ObjectPtr<Artwork> Track::getPreferredArtwork() const
{
return _preferredArtwork;
}
ObjectPtr<Artwork> Track::getPreferredMediaArtwork() const
{
return _preferredMediaArtwork;
}
RangeResults<TrackId> Track::findIds(Session& session, const FindParameters& parameters)
{
session.checkReadTransaction();
@@ -484,6 +519,26 @@ namespace lms::db
_embeddedImageLinks.insert(getDboPtr(image));
}
void Track::setMediaLibrary(ObjectPtr<MediaLibrary> mediaLibrary)
{
_mediaLibrary = getDboPtr(mediaLibrary);
}
void Track::setDirectory(ObjectPtr<Directory> directory)
{
_directory = getDboPtr(directory);
}
void Track::setPreferredArtwork(ObjectPtr<Artwork> artwork)
{
_preferredArtwork = getDboPtr(artwork);
}
void Track::setPreferredMediaArtwork(ObjectPtr<Artwork> artwork)
{
_preferredMediaArtwork = getDboPtr(artwork);
}
std::optional<int> Track::getYear() const
{
return _date.getYear();