GetStarred now returns starred songs
This commit is contained in:
+3
-2
@@ -54,15 +54,16 @@ func (c *AlbumListController) GetAlbumList() {
|
||||
}
|
||||
|
||||
func (c *AlbumListController) GetStarred() {
|
||||
albums, err := c.listGen.GetStarred(0, -1)
|
||||
albums, mediaFiles, err := c.listGen.GetAllStarred()
|
||||
if err != nil {
|
||||
beego.Error("Error retrieving starred albums:", err)
|
||||
beego.Error("Error retrieving starred media:", err)
|
||||
c.SendError(responses.ErrorGeneric, "Internal Error")
|
||||
}
|
||||
|
||||
response := c.NewEmpty()
|
||||
response.Starred = &responses.Starred{}
|
||||
response.Starred.Album = c.ToChildren(albums)
|
||||
response.Starred.Song = c.ToChildren(mediaFiles)
|
||||
|
||||
c.SendResponse(response)
|
||||
}
|
||||
|
||||
+2
-1
@@ -28,7 +28,7 @@ type MediaFile struct {
|
||||
PlayDate time.Time
|
||||
Rating int
|
||||
Starred bool
|
||||
StarredAt time.Time
|
||||
StarredAt time.Time `idx:"Starred"`
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
}
|
||||
@@ -50,5 +50,6 @@ type MediaFileRepository interface {
|
||||
Put(m *MediaFile) error
|
||||
Get(id string) (*MediaFile, error)
|
||||
FindByAlbum(albumId string) (MediaFiles, error)
|
||||
GetStarred(options QueryOptions) (MediaFiles, error)
|
||||
PurgeInactive(active MediaFiles) ([]string, error)
|
||||
}
|
||||
|
||||
@@ -99,3 +99,11 @@ func FromAlbums(albums domain.Albums) Entries {
|
||||
}
|
||||
return entries
|
||||
}
|
||||
|
||||
func FromMediaFiles(mfs domain.MediaFiles) Entries {
|
||||
entries := make(Entries, len(mfs))
|
||||
for i, mf := range mfs {
|
||||
entries[i] = FromMediaFile(&mf)
|
||||
}
|
||||
return entries
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ type ListGenerator interface {
|
||||
GetByName(offset int, size int) (Entries, error)
|
||||
GetByArtist(offset int, size int) (Entries, error)
|
||||
GetStarred(offset int, size int) (Entries, error)
|
||||
GetAllStarred() (albums Entries, mediaFiles Entries, err error)
|
||||
GetNowPlaying() (Entries, error)
|
||||
}
|
||||
|
||||
@@ -98,6 +99,17 @@ func (g *listGenerator) GetStarred(offset int, size int) (Entries, error) {
|
||||
return FromAlbums(albums), nil
|
||||
}
|
||||
|
||||
func (g *listGenerator) GetAllStarred() (Entries, Entries, error) {
|
||||
albums, err := g.GetStarred(0, -1)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
mediaFiles, err := g.mfRepository.GetStarred(domain.QueryOptions{Desc: true})
|
||||
|
||||
return albums, FromMediaFiles(mediaFiles), err
|
||||
}
|
||||
|
||||
func (g *listGenerator) GetNowPlaying() (Entries, error) {
|
||||
npInfo, err := g.npRepo.GetAll()
|
||||
if err != nil {
|
||||
|
||||
@@ -4,6 +4,8 @@ import (
|
||||
"errors"
|
||||
"sort"
|
||||
|
||||
"time"
|
||||
|
||||
"github.com/deluan/gosonic/domain"
|
||||
)
|
||||
|
||||
@@ -43,6 +45,13 @@ func (r *mediaFileRepository) FindByAlbum(albumId string) (domain.MediaFiles, er
|
||||
return mfs, err
|
||||
}
|
||||
|
||||
func (r *mediaFileRepository) GetStarred(options domain.QueryOptions) (domain.MediaFiles, error) {
|
||||
var mfs = make(domain.MediaFiles, 0)
|
||||
start := time.Time{}.Add(time.Duration(1) * time.Hour)
|
||||
err := r.loadRange("Starred", start, time.Now(), &mfs, options)
|
||||
return mfs, err
|
||||
}
|
||||
|
||||
func (r *mediaFileRepository) PurgeInactive(active domain.MediaFiles) ([]string, error) {
|
||||
return r.purgeInactive(active, func(e interface{}) string {
|
||||
return e.(domain.MediaFile).Id
|
||||
|
||||
Reference in New Issue
Block a user