2016-03-07 06:57:32 -09:00
|
|
|
package engine
|
|
|
|
|
|
|
|
|
|
import (
|
2020-01-08 16:45:07 -09:00
|
|
|
"context"
|
2020-01-15 13:49:09 -09:00
|
|
|
"sort"
|
|
|
|
|
"strings"
|
2016-03-08 04:48:47 -09:00
|
|
|
|
2020-01-23 15:44:08 -09:00
|
|
|
"github.com/deluan/navidrome/model"
|
2016-03-08 04:48:47 -09:00
|
|
|
)
|
|
|
|
|
|
2016-03-07 06:57:32 -09:00
|
|
|
type Browser interface {
|
2020-01-22 04:32:31 -09:00
|
|
|
GetGenres(ctx context.Context) (model.Genres, error)
|
2016-03-07 06:57:32 -09:00
|
|
|
}
|
|
|
|
|
|
2020-01-19 11:37:41 -09:00
|
|
|
func NewBrowser(ds model.DataStore) Browser {
|
|
|
|
|
return &browser{ds}
|
2016-03-07 06:57:32 -09:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type browser struct {
|
2020-01-19 11:37:41 -09:00
|
|
|
ds model.DataStore
|
2016-03-07 06:57:32 -09:00
|
|
|
}
|
|
|
|
|
|
2020-01-22 04:32:31 -09:00
|
|
|
func (b *browser) GetGenres(ctx context.Context) (model.Genres, error) {
|
2020-01-27 05:41:33 -09:00
|
|
|
genres, err := b.ds.Genre(ctx).GetAll()
|
2020-01-15 13:49:09 -09:00
|
|
|
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
|
|
|
|
|
}
|