From 7dd9d123a6cbd8806c635d40ecf569fe78b07e70 Mon Sep 17 00:00:00 2001 From: emeric Date: Tue, 17 Jun 2025 09:53:02 +0200 Subject: [PATCH] Simplified some code --- .../steps/ScanStepAssociateReleaseImages.cpp | 45 ++++++++++++------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/src/libs/services/scanner/impl/steps/ScanStepAssociateReleaseImages.cpp b/src/libs/services/scanner/impl/steps/ScanStepAssociateReleaseImages.cpp index 7939a401..a6735963 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepAssociateReleaseImages.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepAssociateReleaseImages.cpp @@ -228,38 +228,51 @@ namespace lms::scanner return releaseId != searchContext.lastRetrievedReleaseId; } + db::Artwork::pointer getOrCreateArtworkFromTrackEmbeddedImage(db::Session& session, const db::TrackEmbeddedImageId& trackEmbeddedImageId) + { + db::Artwork::pointer artwork{ db::Artwork::find(session, trackEmbeddedImageId) }; + if (!artwork) + { + db::TrackEmbeddedImage::pointer trackEmbeddedImage{ db::TrackEmbeddedImage::find(session, trackEmbeddedImageId) }; + assert(trackEmbeddedImage); + artwork = session.create(trackEmbeddedImage); + } + return artwork; + } + + db::Artwork::pointer getOrCreateArtworkFromImage(db::Session& session, const db::ImageId& imageId) + { + db::Artwork::pointer artwork{ db::Artwork::find(session, imageId) }; + if (!artwork) + { + db::Image::pointer image{ db::Image::find(session, imageId) }; + assert(image); + artwork = session.create(image); + } + return artwork; + } + void updateReleaseArtwork(db::Session& session, const ReleaseImageAssociation& releaseImageAssociation) { db::Release::pointer release{ db::Release::find(session, releaseImageAssociation.releaseId) }; assert(release); db::Artwork::pointer artwork; + if (const db::TrackEmbeddedImageId * trackEmbeddedImageId{ std::get_if(&releaseImageAssociation.preferredArtwork) }) { - artwork = db::Artwork::find(session, *trackEmbeddedImageId); - if (!artwork) - { - db::TrackEmbeddedImage::pointer trackEmbeddedImage{ db::TrackEmbeddedImage::find(session, *trackEmbeddedImageId) }; - assert(trackEmbeddedImage); - artwork = session.create(trackEmbeddedImage); - } - + artwork = getOrCreateArtworkFromTrackEmbeddedImage(session, *trackEmbeddedImageId); LMS_LOG(DBUPDATER, DEBUG, "Updating preferred artwork in release '" << release->getName() << "' with embedded image in track " << toPath(session, *trackEmbeddedImageId)); } else if (const db::ImageId * imageId{ std::get_if(&releaseImageAssociation.preferredArtwork) }) { - artwork = db::Artwork::find(session, *imageId); - if (!artwork) - { - db::Image::pointer image{ db::Image::find(session, *imageId) }; - assert(image); - artwork = session.create(image); - } - + artwork = getOrCreateArtworkFromImage(session, *imageId); LMS_LOG(DBUPDATER, DEBUG, "Updating preferred artwork in release '" << release->getName() << "' with image " << toPath(session, *imageId)); } else + { LMS_LOG(DBUPDATER, DEBUG, "Removing preferred artwork from release '" << release->getName() << "'"); + } release.modify()->setPreferredArtwork(artwork); }