feat(server): track scrobble/linstens history (#4770)
* feat(scrobble): implement scrobble repository and record scrobble history Signed-off-by: Deluan <deluan@navidrome.org> * feat(scrobble): add configuration option to enable scrobble history Signed-off-by: Deluan <deluan@navidrome.org> * test(scrobble): enhance scrobble history tests for repository recording Signed-off-by: Deluan <deluan@navidrome.org> --------- Signed-off-by: Deluan <deluan@navidrome.org>
This commit is contained in:
@@ -25,6 +25,7 @@ type MockDataStore struct {
|
||||
MockedTranscoding model.TranscodingRepository
|
||||
MockedUserProps model.UserPropsRepository
|
||||
MockedScrobbleBuffer model.ScrobbleBufferRepository
|
||||
MockedScrobble model.ScrobbleRepository
|
||||
MockedRadio model.RadioRepository
|
||||
scrobbleBufferMu sync.Mutex
|
||||
repoMu sync.Mutex
|
||||
@@ -208,12 +209,23 @@ func (db *MockDataStore) ScrobbleBuffer(ctx context.Context) model.ScrobbleBuffe
|
||||
if db.RealDS != nil {
|
||||
db.MockedScrobbleBuffer = db.RealDS.ScrobbleBuffer(ctx)
|
||||
} else {
|
||||
db.MockedScrobbleBuffer = CreateMockedScrobbleBufferRepo()
|
||||
db.MockedScrobbleBuffer = &MockedScrobbleBufferRepo{}
|
||||
}
|
||||
}
|
||||
return db.MockedScrobbleBuffer
|
||||
}
|
||||
|
||||
func (db *MockDataStore) Scrobble(ctx context.Context) model.ScrobbleRepository {
|
||||
if db.MockedScrobble == nil {
|
||||
if db.RealDS != nil {
|
||||
db.MockedScrobble = db.RealDS.Scrobble(ctx)
|
||||
} else {
|
||||
db.MockedScrobble = &MockScrobbleRepo{ctx: ctx}
|
||||
}
|
||||
}
|
||||
return db.MockedScrobble
|
||||
}
|
||||
|
||||
func (db *MockDataStore) Radio(ctx context.Context) model.RadioRepository {
|
||||
if db.MockedRadio == nil {
|
||||
if db.RealDS != nil {
|
||||
|
||||
Reference in New Issue
Block a user