fix(subsonic): artist search in search3 endpoint

Signed-off-by: Deluan <deluan@navidrome.org>
This commit is contained in:
Deluan
2025-07-19 16:44:07 -04:00
parent a60bea70c9
commit 9f46204b63

View File

@@ -68,17 +68,25 @@ func (api *Router) searchAll(ctx context.Context, sp *searchParams, musicFolderI
// Create query options for library filtering
var options []model.QueryOptions
var artistOptions []model.QueryOptions
if len(musicFolderIds) > 0 {
// For MediaFiles and Albums, use direct library_id filter
options = append(options, model.QueryOptions{
Filters: Eq{"library_id": musicFolderIds},
})
// For Artists, use the repository's built-in library filtering mechanism
// which properly handles the library_artist table joins
// TODO Revisit library filtering in sql_base_repository.go
artistOptions = append(artistOptions, model.QueryOptions{
Filters: Eq{"library_artist.library_id": musicFolderIds},
})
}
// Run searches in parallel
g, ctx := errgroup.WithContext(ctx)
g.Go(callSearch(ctx, api.ds.MediaFile(ctx).Search, q, sp.songOffset, sp.songCount, &mediaFiles, options...))
g.Go(callSearch(ctx, api.ds.Album(ctx).Search, q, sp.albumOffset, sp.albumCount, &albums, options...))
g.Go(callSearch(ctx, api.ds.Artist(ctx).Search, q, sp.artistOffset, sp.artistCount, &artists, options...))
g.Go(callSearch(ctx, api.ds.Artist(ctx).Search, q, sp.artistOffset, sp.artistCount, &artists, artistOptions...))
err := g.Wait()
if err == nil {
log.Debug(ctx, fmt.Sprintf("Search resulted in %d songs, %d albums and %d artists",