From e92fcb79de014e40da9fd697181738f2c546932e Mon Sep 17 00:00:00 2001 From: emeric Date: Wed, 17 Apr 2024 18:32:11 +0200 Subject: [PATCH] Iterate on clusters to better trace --- src/libs/database/impl/Cluster.cpp | 8 ++++++++ src/libs/subsonic/impl/responses/Album.cpp | 14 +++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/libs/database/impl/Cluster.cpp b/src/libs/database/impl/Cluster.cpp index 76065a8b..e92d9faa 100644 --- a/src/libs/database/impl/Cluster.cpp +++ b/src/libs/database/impl/Cluster.cpp @@ -113,6 +113,14 @@ namespace lms::db return utils::execRangeQuery(query, params.range); } + void Cluster::find(Session& session, const FindParameters& params, std::function _func) + { + session.checkReadTransaction(); + auto query{ createQuery>(session, params) }; + + return utils::forEachQueryResult(query, _func); + } + RangeResults Cluster::findOrphanIds(Session& session, std::optional range) { session.checkReadTransaction(); diff --git a/src/libs/subsonic/impl/responses/Album.cpp b/src/libs/subsonic/impl/responses/Album.cpp index 163a89b2..fc3adf03 100644 --- a/src/libs/subsonic/impl/responses/Album.cpp +++ b/src/libs/subsonic/impl/responses/Album.cpp @@ -132,9 +132,11 @@ namespace lms::api::subsonic params.setRelease(release->getId()); params.setClusterTypeName(clusterTypeName); - for (const auto& cluster : Cluster::find(context.dbSession, params).results) - albumNode.addArrayValue(field, cluster->getName()); - } }; + Cluster::find(context.dbSession, params, [&](const Cluster::pointer& cluster) + { + albumNode.addArrayValue(field, cluster->getName()); + }); + }}; addClusters("moods", "MOOD"); @@ -146,8 +148,10 @@ namespace lms::api::subsonic params.setRelease(release->getId()); params.setClusterType(genreClusterType->getId()); - for (const auto& cluster : Cluster::find(context.dbSession, params).results) - albumNode.addArrayChild("genres", createItemGenreNode(cluster->getName())); + Cluster::find(context.dbSession, params, [&](const Cluster::pointer& cluster) + { + albumNode.addArrayChild("genres", createItemGenreNode(cluster->getName())); + }); } albumNode.createEmptyArrayChild("artists");