All ListGenerator's methods now returns Entries, and not Albums anymore

This commit is contained in:
Deluan
2016-03-21 11:37:56 -04:00
parent 0b286afa08
commit 516bd3bddf
3 changed files with 32 additions and 44 deletions
+8
View File
@@ -99,3 +99,11 @@ func FromMediaFile(mf *domain.MediaFile) Entry {
c.UserRating = mf.Rating
return c
}
func FromAlbums(albums domain.Albums) Entries {
entries := make(Entries, len(albums))
for i, al := range albums {
entries[i] = FromAlbum(&al)
}
return entries
}
+17 -21
View File
@@ -8,13 +8,12 @@ import (
"github.com/deluan/gosonic/utils"
)
// TODO Use Entries instead of Albums
type ListGenerator interface {
GetNewest(offset int, size int) (domain.Albums, error)
GetRecent(offset int, size int) (domain.Albums, error)
GetFrequent(offset int, size int) (domain.Albums, error)
GetHighest(offset int, size int) (domain.Albums, error)
GetRandom(offset int, size int) (domain.Albums, error)
GetNewest(offset int, size int) (Entries, error)
GetRecent(offset int, size int) (Entries, error)
GetFrequent(offset int, size int) (Entries, error)
GetHighest(offset int, size int) (Entries, error)
GetRandom(offset int, size int) (Entries, error)
GetStarred() (Entries, error)
GetNowPlaying() (Entries, error)
}
@@ -29,40 +28,42 @@ type listGenerator struct {
npRepo NowPlayingRepository
}
func (g listGenerator) query(qo domain.QueryOptions, offset int, size int) (domain.Albums, error) {
func (g listGenerator) query(qo domain.QueryOptions, offset int, size int) (Entries, error) {
qo.Offset = offset
qo.Size = size
return g.albumRepo.GetAll(qo)
albums, err := g.albumRepo.GetAll(qo)
return FromAlbums(albums), err
}
func (g listGenerator) GetNewest(offset int, size int) (domain.Albums, error) {
func (g listGenerator) GetNewest(offset int, size int) (Entries, error) {
qo := domain.QueryOptions{SortBy: "CreatedAt", Desc: true, Alpha: true}
return g.query(qo, offset, size)
}
func (g listGenerator) GetRecent(offset int, size int) (domain.Albums, error) {
func (g listGenerator) GetRecent(offset int, size int) (Entries, error) {
qo := domain.QueryOptions{SortBy: "PlayDate", Desc: true, Alpha: true}
return g.query(qo, offset, size)
}
func (g listGenerator) GetFrequent(offset int, size int) (domain.Albums, error) {
func (g listGenerator) GetFrequent(offset int, size int) (Entries, error) {
qo := domain.QueryOptions{SortBy: "PlayCount", Desc: true}
return g.query(qo, offset, size)
}
func (g listGenerator) GetHighest(offset int, size int) (domain.Albums, error) {
func (g listGenerator) GetHighest(offset int, size int) (Entries, error) {
qo := domain.QueryOptions{SortBy: "Rating", Desc: true}
return g.query(qo, offset, size)
}
func (g listGenerator) GetRandom(offset int, size int) (domain.Albums, error) {
func (g listGenerator) GetRandom(offset int, size int) (Entries, error) {
ids, err := g.albumRepo.GetAllIds()
if err != nil {
return nil, err
}
size = utils.MinInt(size, len(ids))
perm := rand.Perm(size)
r := make(domain.Albums, size)
r := make(Entries, size)
for i := 0; i < size; i++ {
v := perm[i]
@@ -70,7 +71,7 @@ func (g listGenerator) GetRandom(offset int, size int) (domain.Albums, error) {
if err != nil {
return nil, err
}
r[i] = *al
r[i] = FromAlbum(al)
}
return r, nil
}
@@ -80,13 +81,8 @@ func (g listGenerator) GetStarred() (Entries, error) {
if err != nil {
return nil, err
}
entries := make(Entries, len(albums))
for i, al := range albums {
entries[i] = FromAlbum(&al)
}
return entries, nil
return FromAlbums(albums), nil
}
func (g listGenerator) GetNowPlaying() (Entries, error) {