Refactored getSongsByGenre

This commit is contained in:
Deluan
2020-04-17 21:27:58 -04:00
committed by Deluan Quintão
parent 4c0250f9f8
commit 1fd6571a87
2 changed files with 10 additions and 17 deletions
+8 -15
View File
@@ -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
+2 -2
View File
@@ -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")