mirror of
https://github.com/navidrome/navidrome.git
synced 2025-08-10 00:52:20 +00:00
35 lines
620 B
Go
35 lines
620 B
Go
package engine
|
|
|
|
import (
|
|
"context"
|
|
"sort"
|
|
"strings"
|
|
|
|
"github.com/deluan/navidrome/model"
|
|
)
|
|
|
|
type Browser interface {
|
|
GetGenres(ctx context.Context) (model.Genres, error)
|
|
}
|
|
|
|
func NewBrowser(ds model.DataStore) Browser {
|
|
return &browser{ds}
|
|
}
|
|
|
|
type browser struct {
|
|
ds model.DataStore
|
|
}
|
|
|
|
func (b *browser) GetGenres(ctx context.Context) (model.Genres, error) {
|
|
genres, err := b.ds.Genre(ctx).GetAll()
|
|
for i, g := range genres {
|
|
if strings.TrimSpace(g.Name) == "" {
|
|
genres[i].Name = "<Empty>"
|
|
}
|
|
}
|
|
sort.Slice(genres, func(i, j int) bool {
|
|
return genres[i].Name < genres[j].Name
|
|
})
|
|
return genres, err
|
|
}
|