quintodrome/server/subsonic/engine/browser.go

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

46 lines
883 B
Go
Raw Normal View History

package engine
import (
2020-01-08 16:45:07 -09:00
"context"
2020-01-15 13:49:09 -09:00
"sort"
"strings"
2020-01-23 15:44:08 -09:00
"github.com/deluan/navidrome/model"
)
type Browser interface {
2020-01-21 19:01:43 -09:00
GetSong(ctx context.Context, id string) (*Entry, error)
GetGenres(ctx context.Context) (model.Genres, error)
}
func NewBrowser(ds model.DataStore) Browser {
return &browser{ds}
}
type browser struct {
ds model.DataStore
}
2020-01-21 19:01:43 -09:00
func (b *browser) GetSong(ctx context.Context, id string) (*Entry, error) {
mf, err := b.ds.MediaFile(ctx).Get(id)
2016-03-24 20:04:22 -08:00
if err != nil {
return nil, err
}
entry := FromMediaFile(mf)
2016-03-24 20:04:22 -08:00
return &entry, nil
}
func (b *browser) GetGenres(ctx context.Context) (model.Genres, error) {
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
}