Refactored getSongsByGenre
This commit is contained in:
@@ -11,7 +11,6 @@ import (
|
|||||||
type ListGenerator interface {
|
type ListGenerator interface {
|
||||||
GetAllStarred(ctx context.Context) (artists Entries, albums Entries, mediaFiles Entries, err error)
|
GetAllStarred(ctx context.Context) (artists Entries, albums Entries, mediaFiles Entries, err error)
|
||||||
GetNowPlaying(ctx context.Context) (Entries, error)
|
GetNowPlaying(ctx context.Context) (Entries, error)
|
||||||
GetSongsByGenre(ctx context.Context, offset int, count int, genre string) (Entries, error)
|
|
||||||
GetSongs(ctx context.Context, offset, size int, filter ListFilter) (Entries, error)
|
GetSongs(ctx context.Context, offset, size int, filter ListFilter) (Entries, error)
|
||||||
GetAlbums(ctx context.Context, offset, size int, filter ListFilter) (Entries, error)
|
GetAlbums(ctx context.Context, offset, size int, filter ListFilter) (Entries, error)
|
||||||
}
|
}
|
||||||
@@ -77,7 +76,14 @@ func ByYear(fromYear, toYear int) ListFilter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func RandomSongs(genre string, fromYear, toYear int) ListFilter {
|
func SongsByGenre(genre string) ListFilter {
|
||||||
|
return ListFilter{
|
||||||
|
Sort: "genre asc, title asc",
|
||||||
|
Filters: squirrel.Eq{"genre": genre},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func SongsByRandom(genre string, fromYear, toYear int) ListFilter {
|
||||||
options := ListFilter{
|
options := ListFilter{
|
||||||
Sort: "random()",
|
Sort: "random()",
|
||||||
}
|
}
|
||||||
@@ -112,19 +118,6 @@ func (g *listGenerator) query(ctx context.Context, qo model.QueryOptions) (Entri
|
|||||||
return FromAlbums(albums), err
|
return FromAlbums(albums), err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *listGenerator) GetSongsByGenre(ctx context.Context, offset int, count int, genre string) (Entries, error) {
|
|
||||||
options := model.QueryOptions{Offset: offset, Max: count}
|
|
||||||
if genre != "" {
|
|
||||||
options.Filters = squirrel.Eq{"genre": genre}
|
|
||||||
}
|
|
||||||
mediaFiles, err := g.ds.MediaFile(ctx).GetAll(options)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return FromMediaFiles(mediaFiles), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (g *listGenerator) GetSongs(ctx context.Context, offset, size int, filter ListFilter) (Entries, error) {
|
func (g *listGenerator) GetSongs(ctx context.Context, offset, size int, filter ListFilter) (Entries, error) {
|
||||||
qo := model.QueryOptions(filter)
|
qo := model.QueryOptions(filter)
|
||||||
qo.Offset = offset
|
qo.Offset = offset
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ func (c *AlbumListController) GetRandomSongs(w http.ResponseWriter, r *http.Requ
|
|||||||
fromYear := utils.ParamInt(r, "fromYear", 0)
|
fromYear := utils.ParamInt(r, "fromYear", 0)
|
||||||
toYear := utils.ParamInt(r, "toYear", 0)
|
toYear := utils.ParamInt(r, "toYear", 0)
|
||||||
|
|
||||||
songs, err := c.listGen.GetSongs(r.Context(), 0, size, engine.RandomSongs(genre, fromYear, toYear))
|
songs, err := c.listGen.GetSongs(r.Context(), 0, size, engine.SongsByRandom(genre, fromYear, toYear))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(r, "Error retrieving random songs", "error", err)
|
log.Error(r, "Error retrieving random songs", "error", err)
|
||||||
return nil, NewError(responses.ErrorGeneric, "Internal Error")
|
return nil, NewError(responses.ErrorGeneric, "Internal Error")
|
||||||
@@ -161,7 +161,7 @@ func (c *AlbumListController) GetSongsByGenre(w http.ResponseWriter, r *http.Req
|
|||||||
offset := utils.MinInt(utils.ParamInt(r, "offset", 0), 500)
|
offset := utils.MinInt(utils.ParamInt(r, "offset", 0), 500)
|
||||||
genre := utils.ParamString(r, "genre")
|
genre := utils.ParamString(r, "genre")
|
||||||
|
|
||||||
songs, err := c.listGen.GetSongsByGenre(r.Context(), offset, count, genre)
|
songs, err := c.listGen.GetSongs(r.Context(), offset, count, engine.SongsByGenre(genre))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(r, "Error retrieving random songs", "error", err)
|
log.Error(r, "Error retrieving random songs", "error", err)
|
||||||
return nil, NewError(responses.ErrorGeneric, "Internal Error")
|
return nil, NewError(responses.ErrorGeneric, "Internal Error")
|
||||||
|
|||||||
Reference in New Issue
Block a user