Added a dedicated table for release artists + handle display names in UI/Subsonic API, ref #731

This commit is contained in:
emeric
2025-12-24 09:00:59 +01:00
parent 68cc7116a7
commit f70692b680
78 changed files with 1916 additions and 935 deletions
+21
View File
@@ -728,6 +728,27 @@ namespace lms::db
return utils::fetchQueryResults<TrackArtistLink::pointer>(_trackArtistLinks.find());
}
void Track::visitArtistLinks(const std::function<void(const ObjectPtr<TrackArtistLink>& artistLink)>& visitor) const
{
utils::forEachQueryResult(_trackArtistLinks.find(), visitor);
}
std::vector<ObjectPtr<TrackArtistLink>> Track::getArtistLinks(TrackArtistLinkType type) const
{
std::vector<ObjectPtr<TrackArtistLink>> links;
visitArtistLinks(type, [&links](const ObjectPtr<TrackArtistLink>& artistLink) { links.push_back(artistLink); });
return links;
}
void Track::visitArtistLinks(TrackArtistLinkType type, const std::function<void(const ObjectPtr<TrackArtistLink>& artistLink)>& visitor) const
{
auto query{ session()->query<Wt::Dbo::ptr<TrackArtistLink>>("SELECT t_a_l from track_artist_link t_a_l") };
query.where("t_a_l.track_id = ?").bind(getId());
query.where("t_a_l.type = ?").bind(type);
return utils::forEachQueryResult(query, visitor);
}
std::vector<std::vector<Cluster::pointer>> Track::getClusterGroups(const std::vector<ClusterTypeId>& clusterTypeIds, std::size_t size) const
{
assert(self());