Add GET /api/v1/statistics/soundtracks with every soundtrack and its songs
The other soundtrack statistics are capped at 100, so a client that shows every soundtrack (the MusicPlayer statistics tab) had no way to get them all. This one has no limit and is sorted by name.
This commit is contained in:
1 parent
fc7d787014
commit
080bacae80
9 files changed
+147
-1
No files matched your search
@@ -260,6 +260,17 @@ func (s statsStore) GetMostPlayedSoundtracksWithSongs(_ context.Context, limit i
|
||||
}}, s.err
|
||||
}
|
||||
|
||||
func (s statsStore) GetAllSoundtracksWithSongs(context.Context) ([]repository.GetAllSoundtracksWithSongsRow, error) {
|
||||
return []repository.GetAllSoundtracksWithSongsRow{{
|
||||
SoundtrackUuid: statsSoundtrackUUID,
|
||||
SoundtrackName: "Game A",
|
||||
SoundtrackPlayed: 4,
|
||||
Songs: []byte(`[{"song_uuid":"` + statsSongUUID.String() + `","song_name":"Song","times_played":3}]`),
|
||||
}, {
|
||||
SoundtrackName: "Game B",
|
||||
}}, s.err
|
||||
}
|
||||
|
||||
func (s statsStore) GetStatisticsSummary(context.Context) (repository.GetStatisticsSummaryRow, error) {
|
||||
return repository.GetStatisticsSummaryRow{TotalSoundtracks: 5, AvgSoundtrackPlays: 1.5}, s.err
|
||||
}
|
||||
@@ -288,6 +299,13 @@ func TestStatisticsEndpoints(t *testing.T) {
|
||||
assert.Equal(t, http.StatusUnprocessableEntity, e.do(http.MethodGet, "/api/v1/statistics/soundtracks/most-played?limit="+limit).Code, limit)
|
||||
}
|
||||
|
||||
require.NoError(t, json.Unmarshal(e.do(http.MethodGet, "/api/v1/statistics/soundtracks").Body.Bytes(), &soundtracks))
|
||||
require.Len(t, soundtracks, 2, "every soundtrack, no limit")
|
||||
assert.Equal(t, "Game A", soundtracks[0].SoundtrackName)
|
||||
assert.Equal(t, int32(4), soundtracks[0].SoundtrackPlayed)
|
||||
assert.Equal(t, "Song", soundtracks[0].Songs[0].SongName)
|
||||
assert.Empty(t, soundtracks[1].Songs, "no songs is an empty list")
|
||||
|
||||
var summary backend.StatisticsSummary
|
||||
require.NoError(t, json.Unmarshal(e.do(http.MethodGet, "/api/v1/statistics/summary").Body.Bytes(), &summary))
|
||||
assert.Equal(t, backend.StatisticsSummary{TotalSoundtracks: 5, AvgSoundtrackPlays: 1.5}, summary)
|
||||
@@ -295,4 +313,5 @@ func TestStatisticsEndpoints(t *testing.T) {
|
||||
e.server.stats = backend.NewStatisticsService(statsStore{err: errors.New("db down")})
|
||||
e.handler = e.server.RegisterRoutes()
|
||||
assert.Equal(t, http.StatusInternalServerError, e.do(http.MethodGet, "/api/v1/statistics/summary").Code)
|
||||
assert.Equal(t, http.StatusInternalServerError, e.do(http.MethodGet, "/api/v1/statistics/soundtracks").Code)
|
||||
}
|
||||
Reference in new issue
Block a user