All ListGenerator's methods now returns Entries, and not Albums anymore
This commit is contained in:
+7
-23
@@ -1,11 +1,8 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/astaxie/beego"
|
||||
"github.com/deluan/gosonic/api/responses"
|
||||
"github.com/deluan/gosonic/domain"
|
||||
"github.com/deluan/gosonic/engine"
|
||||
"github.com/deluan/gosonic/utils"
|
||||
)
|
||||
@@ -16,17 +13,17 @@ type AlbumListController struct {
|
||||
types map[string]strategy
|
||||
}
|
||||
|
||||
type strategy func(offset int, size int) (domain.Albums, error)
|
||||
type strategy func(offset int, size int) (engine.Entries, error)
|
||||
|
||||
func (c *AlbumListController) Prepare() {
|
||||
utils.ResolveDependencies(&c.listGen)
|
||||
|
||||
c.types = map[string]strategy{
|
||||
"random": func(o int, s int) (domain.Albums, error) { return c.listGen.GetRandom(o, s) },
|
||||
"newest": func(o int, s int) (domain.Albums, error) { return c.listGen.GetNewest(o, s) },
|
||||
"recent": func(o int, s int) (domain.Albums, error) { return c.listGen.GetRecent(o, s) },
|
||||
"frequent": func(o int, s int) (domain.Albums, error) { return c.listGen.GetFrequent(o, s) },
|
||||
"highest": func(o int, s int) (domain.Albums, error) { return c.listGen.GetHighest(o, s) },
|
||||
"random": func(o int, s int) (engine.Entries, error) { return c.listGen.GetRandom(o, s) },
|
||||
"newest": func(o int, s int) (engine.Entries, error) { return c.listGen.GetNewest(o, s) },
|
||||
"recent": func(o int, s int) (engine.Entries, error) { return c.listGen.GetRecent(o, s) },
|
||||
"frequent": func(o int, s int) (engine.Entries, error) { return c.listGen.GetFrequent(o, s) },
|
||||
"highest": func(o int, s int) (engine.Entries, error) { return c.listGen.GetHighest(o, s) },
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,21 +46,8 @@ func (c *AlbumListController) GetAlbumList() {
|
||||
}
|
||||
|
||||
albumList := make([]responses.Child, len(albums))
|
||||
|
||||
for i, al := range albums {
|
||||
albumList[i].Id = al.Id
|
||||
albumList[i].Title = al.Name
|
||||
albumList[i].Parent = al.ArtistId
|
||||
albumList[i].IsDir = true
|
||||
albumList[i].Album = al.Name
|
||||
albumList[i].Year = al.Year
|
||||
albumList[i].Artist = al.Artist
|
||||
albumList[i].Genre = al.Genre
|
||||
albumList[i].CoverArt = al.CoverArtId
|
||||
if al.Starred {
|
||||
t := time.Now()
|
||||
albumList[i].Starred = &t
|
||||
}
|
||||
albumList[i] = c.ToChild(al)
|
||||
}
|
||||
|
||||
response := c.NewEmpty()
|
||||
|
||||
@@ -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
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user