GetStarred now returns starred songs
This commit is contained in:
parent
1ed8c60130
commit
d59394c653
5 changed files with 34 additions and 3 deletions
|
|
@ -54,15 +54,16 @@ func (c *AlbumListController) GetAlbumList() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *AlbumListController) GetStarred() {
|
func (c *AlbumListController) GetStarred() {
|
||||||
albums, err := c.listGen.GetStarred(0, -1)
|
albums, mediaFiles, err := c.listGen.GetAllStarred()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
beego.Error("Error retrieving starred albums:", err)
|
beego.Error("Error retrieving starred media:", err)
|
||||||
c.SendError(responses.ErrorGeneric, "Internal Error")
|
c.SendError(responses.ErrorGeneric, "Internal Error")
|
||||||
}
|
}
|
||||||
|
|
||||||
response := c.NewEmpty()
|
response := c.NewEmpty()
|
||||||
response.Starred = &responses.Starred{}
|
response.Starred = &responses.Starred{}
|
||||||
response.Starred.Album = c.ToChildren(albums)
|
response.Starred.Album = c.ToChildren(albums)
|
||||||
|
response.Starred.Song = c.ToChildren(mediaFiles)
|
||||||
|
|
||||||
c.SendResponse(response)
|
c.SendResponse(response)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ type MediaFile struct {
|
||||||
PlayDate time.Time
|
PlayDate time.Time
|
||||||
Rating int
|
Rating int
|
||||||
Starred bool
|
Starred bool
|
||||||
StarredAt time.Time
|
StarredAt time.Time `idx:"Starred"`
|
||||||
CreatedAt time.Time
|
CreatedAt time.Time
|
||||||
UpdatedAt time.Time
|
UpdatedAt time.Time
|
||||||
}
|
}
|
||||||
|
|
@ -50,5 +50,6 @@ type MediaFileRepository interface {
|
||||||
Put(m *MediaFile) error
|
Put(m *MediaFile) error
|
||||||
Get(id string) (*MediaFile, error)
|
Get(id string) (*MediaFile, error)
|
||||||
FindByAlbum(albumId string) (MediaFiles, error)
|
FindByAlbum(albumId string) (MediaFiles, error)
|
||||||
|
GetStarred(options QueryOptions) (MediaFiles, error)
|
||||||
PurgeInactive(active MediaFiles) ([]string, error)
|
PurgeInactive(active MediaFiles) ([]string, error)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -99,3 +99,11 @@ func FromAlbums(albums domain.Albums) Entries {
|
||||||
}
|
}
|
||||||
return 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)
|
GetByName(offset int, size int) (Entries, error)
|
||||||
GetByArtist(offset int, size int) (Entries, error)
|
GetByArtist(offset int, size int) (Entries, error)
|
||||||
GetStarred(offset int, size int) (Entries, error)
|
GetStarred(offset int, size int) (Entries, error)
|
||||||
|
GetAllStarred() (albums Entries, mediaFiles Entries, err error)
|
||||||
GetNowPlaying() (Entries, error)
|
GetNowPlaying() (Entries, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -98,6 +99,17 @@ func (g *listGenerator) GetStarred(offset int, size int) (Entries, error) {
|
||||||
return FromAlbums(albums), nil
|
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) {
|
func (g *listGenerator) GetNowPlaying() (Entries, error) {
|
||||||
npInfo, err := g.npRepo.GetAll()
|
npInfo, err := g.npRepo.GetAll()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"sort"
|
"sort"
|
||||||
|
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/deluan/gosonic/domain"
|
"github.com/deluan/gosonic/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -43,6 +45,13 @@ func (r *mediaFileRepository) FindByAlbum(albumId string) (domain.MediaFiles, er
|
||||||
return mfs, err
|
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) {
|
func (r *mediaFileRepository) PurgeInactive(active domain.MediaFiles) ([]string, error) {
|
||||||
return r.purgeInactive(active, func(e interface{}) string {
|
return r.purgeInactive(active, func(e interface{}) string {
|
||||||
return e.(domain.MediaFile).Id
|
return e.(domain.MediaFile).Id
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue