Added scrobbling state for listens

This commit is contained in:
emeric
2022-01-20 19:56:42 +01:00
parent aac119f34c
commit 9e64287383
3 changed files with 11 additions and 6 deletions
@@ -414,6 +414,7 @@ CREATE TABLE IF NOT EXISTS "listen" (
"version" integer not null, "version" integer not null,
"date_time" text, "date_time" text,
"scrobbler" integer not null, "scrobbler" integer not null,
"scrobbling_state" integer not null,
"track_id" bigint, "track_id" bigint,
"user_id" bigint, "user_id" bigint,
constraint "fk_listen_track" foreign key ("track_id") references "track" ("id") on delete cascade deferrable initially deferred, constraint "fk_listen_track" foreign key ("track_id") references "track" ("id") on delete cascade deferrable initially deferred,
@@ -95,6 +95,7 @@ class Listen : public Object<Listen, ListenId>
{ {
Wt::Dbo::field(a, _dateTime, "date_time"); Wt::Dbo::field(a, _dateTime, "date_time");
Wt::Dbo::field(a, _scrobbler, "scrobbler"); Wt::Dbo::field(a, _scrobbler, "scrobbler");
Wt::Dbo::field(a, _scrobblingState, "scrobbling_state");
Wt::Dbo::belongsTo(a, _track, "track", Wt::Dbo::OnDeleteCascade); Wt::Dbo::belongsTo(a, _track, "track", Wt::Dbo::OnDeleteCascade);
Wt::Dbo::belongsTo(a, _user, "user", Wt::Dbo::OnDeleteCascade); Wt::Dbo::belongsTo(a, _user, "user", Wt::Dbo::OnDeleteCascade);
@@ -103,6 +104,8 @@ class Listen : public Object<Listen, ListenId>
private: private:
Wt::WDateTime _dateTime; Wt::WDateTime _dateTime;
Scrobbler _scrobbler; Scrobbler _scrobbler;
ScrobblingState _scrobblingState {ScrobblingState::PendingAdd};
Wt::Dbo::ptr<User> _user; Wt::Dbo::ptr<User> _user;
Wt::Dbo::ptr<Track> _track; Wt::Dbo::ptr<Track> _track;
}; };
@@ -111,7 +111,6 @@ namespace Database
StarredDateDesc, StarredDateDesc,
}; };
// Do not change enum values!
enum class TrackArtistLinkType enum class TrackArtistLinkType
{ {
Artist = 0, // regular track artist Artist = 0, // regular track artist
@@ -128,7 +127,6 @@ namespace Database
}; };
// User selectable audio file formats // User selectable audio file formats
// Do not change values
enum class AudioFormat enum class AudioFormat
{ {
MP3 = 1, MP3 = 1,
@@ -143,14 +141,19 @@ namespace Database
void visitAllowedAudioBitrates(std::function<void(Bitrate)>); void visitAllowedAudioBitrates(std::function<void(Bitrate)>);
bool isAudioBitrateAllowed(Bitrate bitrate); bool isAudioBitrateAllowed(Bitrate bitrate);
// Do not change enum values!
enum class Scrobbler enum class Scrobbler
{ {
Internal = 0, Internal = 0,
ListenBrainz = 1, ListenBrainz = 1,
}; };
// Do not change enum values! enum class ScrobblingState
{
PendingAdd = 0,
Synchronized = 1,
PendingRemove = 2,
};
enum class UserType enum class UserType
{ {
REGULAR = 0, REGULAR = 0,
@@ -158,14 +161,12 @@ namespace Database
DEMO = 2, DEMO = 2,
}; };
// Do not change enum values!
enum class UITheme enum class UITheme
{ {
Light = 0, Light = 0,
Dark = 1, Dark = 1,
}; };
// Do not change enum values!
enum class SubsonicArtistListMode enum class SubsonicArtistListMode
{ {
AllArtists = 0, AllArtists = 0,