Centralized artwork lookup logic for playlists
This commit is contained in:
@@ -260,6 +260,26 @@ namespace lms::cover
|
||||
return res;
|
||||
}
|
||||
|
||||
ArtworkService::ImageFindResult ArtworkService::findTrackListImage(db::TrackListId trackListId)
|
||||
{
|
||||
db::Session& session{ _db.getTLSSession() };
|
||||
auto transaction{ session.createReadTransaction() };
|
||||
|
||||
ImageFindResult res;
|
||||
|
||||
db::TrackEmbeddedImage::FindParameters params;
|
||||
params.setTrackList(trackListId);
|
||||
params.setIsPreferred(true);
|
||||
params.setSortMethod(db::TrackEmbeddedImageSortMethod::FrontCoverAndSize);
|
||||
params.setRange(db::Range{ .offset = 0, .size = 1 });
|
||||
|
||||
db::TrackEmbeddedImage::find(session, params, [&](const db::TrackEmbeddedImage::pointer& image) {
|
||||
res = image->getId();
|
||||
});
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
std::shared_ptr<image::IEncodedImage> ArtworkService::getImage(db::ImageId imageId, std::optional<image::ImageSize> width)
|
||||
{
|
||||
const ImageCache::EntryDesc cacheEntryDesc{ imageId, width };
|
||||
|
||||
@@ -50,6 +50,7 @@ namespace lms::cover
|
||||
ImageFindResult findArtistImage(db::ArtistId artistId) override;
|
||||
ImageFindResult findPreferredTrackImage(db::TrackId trackId) override;
|
||||
ImageFindResult findReleaseImage(db::ReleaseId releaseId) override;
|
||||
ImageFindResult findTrackListImage(db::TrackListId trackListId) override;
|
||||
|
||||
std::shared_ptr<image::IEncodedImage> getImage(db::ImageId imageId, std::optional<image::ImageSize> width) override;
|
||||
std::shared_ptr<image::IEncodedImage> getTrackEmbeddedImage(db::TrackEmbeddedImageId trackEmbeddedImageId, std::optional<image::ImageSize> width) override;
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "database/ReleaseId.hpp"
|
||||
#include "database/TrackEmbeddedImageId.hpp"
|
||||
#include "database/TrackId.hpp"
|
||||
#include "database/TrackListId.hpp"
|
||||
#include "image/IEncodedImage.hpp"
|
||||
|
||||
namespace lms::db
|
||||
@@ -48,6 +49,7 @@ namespace lms::cover
|
||||
virtual ImageFindResult findArtistImage(db::ArtistId artistId) = 0;
|
||||
virtual ImageFindResult findPreferredTrackImage(db::TrackId trackId) = 0;
|
||||
virtual ImageFindResult findReleaseImage(db::ReleaseId releaseId) = 0;
|
||||
virtual ImageFindResult findTrackListImage(db::TrackListId trackListId) = 0;
|
||||
|
||||
// Image retrieval
|
||||
virtual std::shared_ptr<image::IEncodedImage> getImage(db::ImageId imageId, std::optional<image::ImageSize> width) = 0;
|
||||
|
||||
Reference in New Issue
Block a user