diff --git a/api/album_list.go b/api/album_lists.go similarity index 70% rename from api/album_list.go rename to api/album_lists.go index 85354c4e..e6407a37 100644 --- a/api/album_list.go +++ b/api/album_lists.go @@ -19,11 +19,14 @@ func (c *AlbumListController) Prepare() { utils.ResolveDependencies(&c.listGen) c.types = map[string]strategy{ - "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) }, + "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) }, + "alphabeticalByName": func(o int, s int) (engine.Entries, error) { return c.listGen.GetByName(o, s) }, + "alphabeticalByArtist": func(o int, s int) (engine.Entries, error) { return c.listGen.GetByArtist(o, s) }, + "starred": func(o int, s int) (engine.Entries, error) { return c.listGen.GetStarred(o, s) }, } } @@ -51,7 +54,7 @@ func (c *AlbumListController) GetAlbumList() { } func (c *AlbumListController) GetStarred() { - albums, err := c.listGen.GetStarred() + albums, err := c.listGen.GetStarred(0, -1) if err != nil { beego.Error("Error retrieving starred albums:", err) c.SendError(responses.ERROR_GENERIC, "Internal Error") diff --git a/api/album_list_test.go b/api/album_lists_test.go similarity index 100% rename from api/album_list_test.go rename to api/album_lists_test.go diff --git a/engine/list_generator.go b/engine/list_generator.go index 86046a1c..952a0cb5 100644 --- a/engine/list_generator.go +++ b/engine/list_generator.go @@ -14,7 +14,9 @@ type ListGenerator interface { GetFrequent(offset int, size int) (Entries, error) GetHighest(offset int, size int) (Entries, error) GetRandom(offset int, size int) (Entries, error) - GetStarred() (Entries, error) + GetByName(offset int, size int) (Entries, error) + GetByArtist(offset int, size int) (Entries, error) + GetStarred(offset int, size int) (Entries, error) GetNowPlaying() (Entries, error) } @@ -56,6 +58,16 @@ func (g listGenerator) GetHighest(offset int, size int) (Entries, error) { return g.query(qo, offset, size) } +func (g listGenerator) GetByName(offset int, size int) (Entries, error) { + qo := domain.QueryOptions{SortBy: "Name", Alpha: true} + return g.query(qo, offset, size) +} + +func (g listGenerator) GetByArtist(offset int, size int) (Entries, error) { + qo := domain.QueryOptions{SortBy: "Artist", Alpha: true} + return g.query(qo, offset, size) +} + func (g listGenerator) GetRandom(offset int, size int) (Entries, error) { ids, err := g.albumRepo.GetAllIds() if err != nil { @@ -76,8 +88,9 @@ func (g listGenerator) GetRandom(offset int, size int) (Entries, error) { return r, nil } -func (g listGenerator) GetStarred() (Entries, error) { - albums, err := g.albumRepo.GetStarred(domain.QueryOptions{}) +func (g listGenerator) GetStarred(offset int, size int) (Entries, error) { + qo := domain.QueryOptions{Offset: offset, Size: size} + albums, err := g.albumRepo.GetStarred(qo) if err != nil { return nil, err }