Removed useless redundant query

This commit is contained in:
emeric
2026-06-18 18:45:42 +02:00
parent 2da0e98b9f
commit 7b0039ab85
4 changed files with 107 additions and 15 deletions
+7 -7
View File
@@ -41,17 +41,17 @@ namespace lms::api::subsonic
namespace utils
{
std::string joinArtistNames(const std::vector<Artist::pointer>& artists)
std::string joinArtistNames(const std::vector<TrackArtistLink::pointer>& links)
{
if (artists.size() == 1)
return artists.front()->getName();
if (links.size() == 1)
return std::string{ links.front()->getArtistName() };
std::vector<std::string> names;
names.resize(artists.size());
names.resize(links.size());
std::transform(std::cbegin(artists), std::cend(artists), std::begin(names),
[](const Artist::pointer& artist) {
return artist->getName();
std::transform(std::cbegin(links), std::cend(links), std::begin(names),
[](const TrackArtistLink::pointer& link) {
return std::string{ link->getArtistName() };
});
return core::stringUtils::joinStrings(names, ", ");
+1 -1
View File
@@ -42,7 +42,7 @@ namespace lms::api::subsonic
namespace utils
{
std::string joinArtistNames(const std::vector<db::ObjectPtr<db::Artist>>& artists);
std::string joinArtistNames(const std::vector<db::ObjectPtr<db::TrackArtistLink>>& links);
std::string_view toString(db::TrackArtistLinkType type);
} // namespace utils
+16 -7
View File
@@ -134,16 +134,24 @@ namespace lms::api::subsonic
trackResponse.setAttribute("coverArt", idToString(coverArtId));
}
const std::vector<db::Artist::pointer>& artists{ track->getArtists({ db::TrackArtistLinkType::Artist }) };
if (!artists.empty())
std::vector<db::TrackArtistLink::pointer> artistLinks;
std::vector<db::TrackArtistLink::pointer> trackArtistLinks;
track->visitArtistLinks([&](const db::TrackArtistLink::pointer& link) {
artistLinks.push_back(link);
if (link->getType() == db::TrackArtistLinkType::Artist)
trackArtistLinks.push_back(link);
});
if (!trackArtistLinks.empty())
{
if (!track->getArtistDisplayName().empty())
trackResponse.setAttribute("artist", track->getArtistDisplayName());
else
trackResponse.setAttribute("artist", utils::joinArtistNames(artists));
trackResponse.setAttribute("artist", utils::joinArtistNames(trackArtistLinks));
if (artists.size() == 1)
trackResponse.setAttribute("artistId", idToString(artists.front()->getId()));
if (trackArtistLinks.size() == 1)
trackResponse.setAttribute("artistId", idToString(trackArtistLinks.front()->getArtistId()));
}
const db::Release::pointer release{ track->getRelease() };
@@ -195,7 +203,8 @@ namespace lms::api::subsonic
trackResponse.createEmptyArrayChild("artists");
trackResponse.createEmptyArrayChild("contributors");
track->visitArtistLinks([&](const db::TrackArtistLink::pointer& artistLink) {
for (const auto& artistLink : artistLinks)
{
switch (artistLink->getType())
{
case db::TrackArtistLinkType::Artist:
@@ -204,7 +213,7 @@ namespace lms::api::subsonic
default:
trackResponse.addArrayChild("contributors", createContributorNode(artistLink));
}
});
}
if (release)
{