Added last.fm support to scrobble data, fixes #138
This commit is contained in:
@@ -35,7 +35,7 @@ namespace lms::db
|
||||
{
|
||||
namespace
|
||||
{
|
||||
static constexpr Version LMS_DATABASE_VERSION{ 105 };
|
||||
static constexpr Version LMS_DATABASE_VERSION{ 106 };
|
||||
}
|
||||
|
||||
VersionInfo::VersionInfo()
|
||||
@@ -1729,6 +1729,13 @@ FROM track)");
|
||||
utils::executeCommand(*session.getDboSession(), R"(ALTER TABLE "playlist_file" ADD COLUMN "cover_image_file" text NOT NULL DEFAULT '')");
|
||||
}
|
||||
|
||||
void migrateFromV105(Session& session)
|
||||
{
|
||||
utils::executeCommand(*session.getDboSession(), R"(ALTER TABLE "user" ADD COLUMN "lastfm_api_key" TEXT NOT NULL DEFAULT '')");
|
||||
utils::executeCommand(*session.getDboSession(), R"(ALTER TABLE "user" ADD COLUMN "lastfm_api_secret" TEXT NOT NULL DEFAULT '')");
|
||||
utils::executeCommand(*session.getDboSession(), R"(ALTER TABLE "user" ADD COLUMN "lastfm_session_key" TEXT NOT NULL DEFAULT '')");
|
||||
}
|
||||
|
||||
bool doDbMigration(Session& session)
|
||||
{
|
||||
constexpr std::string_view outdatedMsg{ "Outdated database, please rebuild it (delete the .db file and restart)" };
|
||||
@@ -1810,6 +1817,7 @@ FROM track)");
|
||||
{ 102, migrateFromV102 },
|
||||
{ 103, migrateFromV103 },
|
||||
{ 104, migrateFromV104 },
|
||||
{ 105, migrateFromV105 },
|
||||
};
|
||||
|
||||
bool migrationPerformed{};
|
||||
|
||||
@@ -198,6 +198,7 @@ namespace lms::db
|
||||
{
|
||||
Internal = 0,
|
||||
ListenBrainz = 1,
|
||||
LastFm = 2,
|
||||
};
|
||||
|
||||
enum class FeedbackBackend
|
||||
|
||||
@@ -118,6 +118,9 @@ namespace lms::db
|
||||
void setFeedbackBackend(FeedbackBackend feedbackBackend) { _feedbackBackend = feedbackBackend; }
|
||||
void setScrobblingBackend(ScrobblingBackend scrobblingBackend) { _scrobblingBackend = scrobblingBackend; }
|
||||
void setListenBrainzToken(std::string_view token) { _listenbrainzToken = token; }
|
||||
void setLastFmApiKey(std::string_view key) { _lastFmApiKey = key; }
|
||||
void setLastFmApiSecret(std::string_view secret) { _lastFmApiSecret = secret; }
|
||||
void setLastFmSessionKey(std::string_view key) { _lastFmSessionKey = key; }
|
||||
|
||||
// read
|
||||
bool isAdmin() const { return _type == UserType::ADMIN; }
|
||||
@@ -134,6 +137,9 @@ namespace lms::db
|
||||
FeedbackBackend getFeedbackBackend() const { return _feedbackBackend; }
|
||||
ScrobblingBackend getScrobblingBackend() const { return _scrobblingBackend; }
|
||||
std::string_view getListenBrainzToken() const { return _listenbrainzToken; }
|
||||
std::string_view getLastFmApiKey() const { return _lastFmApiKey; }
|
||||
std::string_view getLastFmApiSecret() const { return _lastFmApiSecret; }
|
||||
std::string_view getLastFmSessionKey() const { return _lastFmSessionKey; }
|
||||
|
||||
template<class Action>
|
||||
void persist(Action& a)
|
||||
@@ -155,6 +161,9 @@ namespace lms::db
|
||||
Wt::Dbo::field(a, _feedbackBackend, "feedback_backend");
|
||||
Wt::Dbo::field(a, _scrobblingBackend, "scrobbling_backend");
|
||||
Wt::Dbo::field(a, _listenbrainzToken, "listenbrainz_token");
|
||||
Wt::Dbo::field(a, _lastFmApiKey, "lastfm_api_key");
|
||||
Wt::Dbo::field(a, _lastFmApiSecret, "lastfm_api_secret");
|
||||
Wt::Dbo::field(a, _lastFmSessionKey, "lastfm_session_key");
|
||||
|
||||
Wt::Dbo::hasMany(a, _authTokens, Wt::Dbo::ManyToOne, "user");
|
||||
Wt::Dbo::hasMany(a, _uiStates, Wt::Dbo::ManyToOne, "user");
|
||||
@@ -176,7 +185,10 @@ namespace lms::db
|
||||
core::EnumSet<TrackArtistLinkType> _uiInlineArtistRelationships{ TrackArtistLinkType::Composer, TrackArtistLinkType::Performer };
|
||||
FeedbackBackend _feedbackBackend{ defaultFeedbackBackend };
|
||||
ScrobblingBackend _scrobblingBackend{ defaultScrobblingBackend };
|
||||
std::string _listenbrainzToken; // Musicbrainz Identifier
|
||||
std::string _listenbrainzToken;
|
||||
std::string _lastFmApiKey;
|
||||
std::string _lastFmApiSecret;
|
||||
std::string _lastFmSessionKey;
|
||||
|
||||
// Admin defined settings
|
||||
UserType _type{ UserType::REGULAR };
|
||||
|
||||
Reference in New Issue
Block a user