Implemented Subsonic's user rating for tracks, albums and artists, fixes #511

This commit is contained in:
emeric
2024-08-30 19:40:15 +02:00
parent cd0e88d28d
commit 29d0610eb2
30 changed files with 991 additions and 5 deletions
@@ -23,6 +23,9 @@
#include "core/ILogger.hpp"
#include "database/Artist.hpp"
#include "database/Db.hpp"
#include "database/RatedArtist.hpp"
#include "database/RatedRelease.hpp"
#include "database/RatedTrack.hpp"
#include "database/Release.hpp"
#include "database/Session.hpp"
#include "database/StarredArtist.hpp"
@@ -108,6 +111,16 @@ namespace lms::feedback
return Artist::findIds(session, searchParams);
}
void FeedbackService::setRating(db::UserId userId, db::ArtistId artistId, std::optional<db::Rating> rating)
{
setRating<Artist, ArtistId, RatedArtist>(userId, artistId, rating);
}
std::optional<db::Rating> FeedbackService::getRating(db::UserId userId, db::ArtistId artistId)
{
return getRating<Artist, ArtistId, RatedArtist>(userId, artistId);
}
void FeedbackService::star(UserId userId, ReleaseId releaseId)
{
star<Release, ReleaseId, StarredRelease>(userId, releaseId);
@@ -148,6 +161,16 @@ namespace lms::feedback
return Release::findIds(session, searchParams);
}
void FeedbackService::setRating(db::UserId userId, db::ReleaseId releaseId, std::optional<db::Rating> rating)
{
setRating<Release, ReleaseId, RatedRelease>(userId, releaseId, rating);
}
std::optional<db::Rating> FeedbackService::getRating(db::UserId userId, db::ReleaseId releaseId)
{
return getRating<Release, ReleaseId, RatedRelease>(userId, releaseId);
}
void FeedbackService::star(UserId userId, TrackId trackId)
{
star<Track, TrackId, StarredTrack>(userId, trackId);
@@ -187,4 +210,14 @@ namespace lms::feedback
return Track::findIds(session, searchParams);
}
void FeedbackService::setRating(db::UserId userId, db::TrackId trackId, std::optional<db::Rating> rating)
{
setRating<db::Track, db::TrackId, db::RatedTrack>(userId, trackId, rating);
}
std::optional<db::Rating> FeedbackService::getRating(db::UserId userId, db::TrackId trackId)
{
return getRating<db::Track, db::TrackId, db::RatedTrack>(userId, trackId);
}
} // namespace lms::feedback