All ListGenerator's methods now returns Entries, and not Albums anymore
This commit is contained in:
+7
-23
@@ -1,11 +1,8 @@
|
|||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/astaxie/beego"
|
"github.com/astaxie/beego"
|
||||||
"github.com/deluan/gosonic/api/responses"
|
"github.com/deluan/gosonic/api/responses"
|
||||||
"github.com/deluan/gosonic/domain"
|
|
||||||
"github.com/deluan/gosonic/engine"
|
"github.com/deluan/gosonic/engine"
|
||||||
"github.com/deluan/gosonic/utils"
|
"github.com/deluan/gosonic/utils"
|
||||||
)
|
)
|
||||||
@@ -16,17 +13,17 @@ type AlbumListController struct {
|
|||||||
types map[string]strategy
|
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() {
|
func (c *AlbumListController) Prepare() {
|
||||||
utils.ResolveDependencies(&c.listGen)
|
utils.ResolveDependencies(&c.listGen)
|
||||||
|
|
||||||
c.types = map[string]strategy{
|
c.types = map[string]strategy{
|
||||||
"random": func(o int, s int) (domain.Albums, error) { return c.listGen.GetRandom(o, s) },
|
"random": func(o int, s int) (engine.Entries, error) { return c.listGen.GetRandom(o, s) },
|
||||||
"newest": func(o int, s int) (domain.Albums, error) { return c.listGen.GetNewest(o, s) },
|
"newest": func(o int, s int) (engine.Entries, error) { return c.listGen.GetNewest(o, s) },
|
||||||
"recent": func(o int, s int) (domain.Albums, error) { return c.listGen.GetRecent(o, s) },
|
"recent": func(o int, s int) (engine.Entries, error) { return c.listGen.GetRecent(o, s) },
|
||||||
"frequent": func(o int, s int) (domain.Albums, error) { return c.listGen.GetFrequent(o, s) },
|
"frequent": func(o int, s int) (engine.Entries, error) { return c.listGen.GetFrequent(o, s) },
|
||||||
"highest": func(o int, s int) (domain.Albums, error) { return c.listGen.GetHighest(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))
|
albumList := make([]responses.Child, len(albums))
|
||||||
|
|
||||||
for i, al := range albums {
|
for i, al := range albums {
|
||||||
albumList[i].Id = al.Id
|
albumList[i] = c.ToChild(al)
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
response := c.NewEmpty()
|
response := c.NewEmpty()
|
||||||
|
|||||||
@@ -99,3 +99,11 @@ func FromMediaFile(mf *domain.MediaFile) Entry {
|
|||||||
c.UserRating = mf.Rating
|
c.UserRating = mf.Rating
|
||||||
return c
|
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"
|
"github.com/deluan/gosonic/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TODO Use Entries instead of Albums
|
|
||||||
type ListGenerator interface {
|
type ListGenerator interface {
|
||||||
GetNewest(offset int, size int) (domain.Albums, error)
|
GetNewest(offset int, size int) (Entries, error)
|
||||||
GetRecent(offset int, size int) (domain.Albums, error)
|
GetRecent(offset int, size int) (Entries, error)
|
||||||
GetFrequent(offset int, size int) (domain.Albums, error)
|
GetFrequent(offset int, size int) (Entries, error)
|
||||||
GetHighest(offset int, size int) (domain.Albums, error)
|
GetHighest(offset int, size int) (Entries, error)
|
||||||
GetRandom(offset int, size int) (domain.Albums, error)
|
GetRandom(offset int, size int) (Entries, error)
|
||||||
GetStarred() (Entries, error)
|
GetStarred() (Entries, error)
|
||||||
GetNowPlaying() (Entries, error)
|
GetNowPlaying() (Entries, error)
|
||||||
}
|
}
|
||||||
@@ -29,40 +28,42 @@ type listGenerator struct {
|
|||||||
npRepo NowPlayingRepository
|
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.Offset = offset
|
||||||
qo.Size = size
|
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}
|
qo := domain.QueryOptions{SortBy: "CreatedAt", Desc: true, Alpha: true}
|
||||||
return g.query(qo, offset, size)
|
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}
|
qo := domain.QueryOptions{SortBy: "PlayDate", Desc: true, Alpha: true}
|
||||||
return g.query(qo, offset, size)
|
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}
|
qo := domain.QueryOptions{SortBy: "PlayCount", Desc: true}
|
||||||
return g.query(qo, offset, size)
|
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}
|
qo := domain.QueryOptions{SortBy: "Rating", Desc: true}
|
||||||
return g.query(qo, offset, size)
|
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()
|
ids, err := g.albumRepo.GetAllIds()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
size = utils.MinInt(size, len(ids))
|
size = utils.MinInt(size, len(ids))
|
||||||
perm := rand.Perm(size)
|
perm := rand.Perm(size)
|
||||||
r := make(domain.Albums, size)
|
r := make(Entries, size)
|
||||||
|
|
||||||
for i := 0; i < size; i++ {
|
for i := 0; i < size; i++ {
|
||||||
v := perm[i]
|
v := perm[i]
|
||||||
@@ -70,7 +71,7 @@ func (g listGenerator) GetRandom(offset int, size int) (domain.Albums, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
r[i] = *al
|
r[i] = FromAlbum(al)
|
||||||
}
|
}
|
||||||
return r, nil
|
return r, nil
|
||||||
}
|
}
|
||||||
@@ -80,13 +81,8 @@ func (g listGenerator) GetStarred() (Entries, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
entries := make(Entries, len(albums))
|
|
||||||
|
|
||||||
for i, al := range albums {
|
return FromAlbums(albums), nil
|
||||||
entries[i] = FromAlbum(&al)
|
|
||||||
}
|
|
||||||
|
|
||||||
return entries, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g listGenerator) GetNowPlaying() (Entries, error) {
|
func (g listGenerator) GetNowPlaying() (Entries, error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user