From 6af63814af11f86e153b692c076cb86d77e8cbdb Mon Sep 17 00:00:00 2001 From: Voten641 Date: Mon, 22 Jun 2026 20:25:26 +0200 Subject: [PATCH] fix(subsonic): address review issues in getMostPlayedSongs endpoint --- persistence/scrobble_repository.go | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/persistence/scrobble_repository.go b/persistence/scrobble_repository.go index 630d8b837..7a247d50a 100644 --- a/persistence/scrobble_repository.go +++ b/persistence/scrobble_repository.go @@ -43,12 +43,18 @@ func (e *dbMostPlayedEntry) PostScan() error { } func (r *scrobbleRepository) GetMostPlayed(offset, count int) ([]model.MostPlayedEntry, error) { + if offset < 0 { + offset = 0 + } + if count <= 0 { + count = 50 + } userID := loggedUser(r.ctx).ID sq := Select("m.*", "count(*) as play_count"). From(r.tableName+" s"). LeftJoin("media_file m ON m.id = s.media_file_id"). Where(Eq{"s.user_id": userID}). - GroupBy("s.media_file_id"). + GroupBy("m.id"). OrderBy("play_count DESC"). Offset(uint64(offset)). Limit(uint64(count)) @@ -60,16 +66,13 @@ func (r *scrobbleRepository) GetMostPlayed(offset, count int) ([]model.MostPlaye entries := make([]model.MostPlayedEntry, 0, len(rows)) for i := range rows { - entry := model.MostPlayedEntry{ + if rows[i].MediaFile == nil { + continue + } + entries = append(entries, model.MostPlayedEntry{ MediaFile: *rows[i].MediaFile, PlayCount: rows[i].PlayCount, - } - var err error - entry.Participants, err = r.getParticipants(rows[i].MediaFile) - if err != nil { - return nil, err - } - entries = append(entries, entry) + }) } return entries, nil }