diff --git a/server/ctrlsubsonic/handlers_by_folder.go b/server/ctrlsubsonic/handlers_by_folder.go index 3679f307..c276d068 100644 --- a/server/ctrlsubsonic/handlers_by_folder.go +++ b/server/ctrlsubsonic/handlers_by_folder.go @@ -82,6 +82,7 @@ func (c *Controller) ServeGetMusicDirectory(r *http.Request) *spec.Response { c.DB. Where("album_id=?", id.Value). Preload("Album"). + Preload("Album.TagArtist"). Order("filename"). Find(&childTracks) for _, c := range childTracks { diff --git a/server/ctrlsubsonic/handlers_by_tags.go b/server/ctrlsubsonic/handlers_by_tags.go index 4de4fb5d..302601f3 100644 --- a/server/ctrlsubsonic/handlers_by_tags.go +++ b/server/ctrlsubsonic/handlers_by_tags.go @@ -343,6 +343,7 @@ func (c *Controller) ServeGetSongsByGenre(r *http.Request) *spec.Response { Joins("JOIN track_genres ON track_genres.track_id=tracks.id"). Joins("JOIN genres ON track_genres.genre_id=genres.id AND genres.name=?", genre). Preload("Album"). + Preload("Album.TagArtist"). Offset(params.GetOrInt("offset", 0)). Limit(params.GetOrInt("count", 10)) if m := c.getMusicFolder(params); m != "" { diff --git a/server/ctrlsubsonic/handlers_common.go b/server/ctrlsubsonic/handlers_common.go index e0e4188f..5b6a1ad0 100644 --- a/server/ctrlsubsonic/handlers_common.go +++ b/server/ctrlsubsonic/handlers_common.go @@ -188,6 +188,7 @@ func (c *Controller) ServeGetSong(r *http.Request) *spec.Response { err = c.DB. Where("id=?", id.Value). Preload("Album"). + Preload("Album.TagArtist"). First(track). Error if errors.Is(err, gorm.ErrRecordNotFound) { @@ -204,6 +205,7 @@ func (c *Controller) ServeGetRandomSongs(r *http.Request) *spec.Response { q := c.DB.DB. Limit(params.GetOrInt("size", 10)). Preload("Album"). + Preload("Album.TagArtist"). Joins("JOIN albums ON tracks.album_id=albums.id"). Order(gorm.Expr("random()")) if year, err := params.GetInt("fromYear"); err == nil { @@ -219,7 +221,9 @@ func (c *Controller) ServeGetRandomSongs(r *http.Request) *spec.Response { if m := c.getMusicFolder(params); m != "" { q = q.Where("albums.root_dir=?", m) } - q.Find(&tracks) + if err := q.Find(&tracks).Error; err != nil { + return spec.NewError(10, "get random songs: %v", err) + } sub := spec.NewResponse() sub.RandomTracks = &spec.RandomTracks{} sub.RandomTracks.List = make([]*spec.TrackChild, len(tracks)) diff --git a/server/ctrlsubsonic/handlers_playlist.go b/server/ctrlsubsonic/handlers_playlist.go index 5ef22a2b..e5897119 100644 --- a/server/ctrlsubsonic/handlers_playlist.go +++ b/server/ctrlsubsonic/handlers_playlist.go @@ -32,6 +32,7 @@ func playlistRender(c *Controller, playlist *db.Playlist) *spec.Playlist { err := c.DB. Where("id=?", id). Preload("Album"). + Preload("Album.TagArtist"). Find(&track). Error if errors.Is(err, gorm.ErrRecordNotFound) {