mirror of
https://github.com/navidrome/navidrome.git
synced 2025-04-16 04:00:38 +03:00
More slices instead of pointers of slice
This commit is contained in:
parent
bd07c74acd
commit
27b7b7ce08
@ -16,17 +16,17 @@ type AlbumListController struct {
|
||||
types map[string]strategy
|
||||
}
|
||||
|
||||
type strategy func(offset int, size int) (*domain.Albums, error)
|
||||
type strategy func(offset int, size int) (domain.Albums, error)
|
||||
|
||||
func (c *AlbumListController) Prepare() {
|
||||
utils.ResolveDependencies(&c.listGen)
|
||||
|
||||
c.types = map[string]strategy{
|
||||
"random": func(o int, s int) (*domain.Albums, error) { return c.listGen.GetRandom(o, s) },
|
||||
"newest": func(o int, s int) (*domain.Albums, error) { return c.listGen.GetNewest(o, s) },
|
||||
"recent": func(o int, s int) (*domain.Albums, error) { return c.listGen.GetRecent(o, s) },
|
||||
"frequent": func(o int, s int) (*domain.Albums, error) { return c.listGen.GetFrequent(o, s) },
|
||||
"highest": func(o int, s int) (*domain.Albums, error) { return c.listGen.GetHighest(o, s) },
|
||||
"random": func(o int, s int) (domain.Albums, error) { return c.listGen.GetRandom(o, s) },
|
||||
"newest": func(o int, s int) (domain.Albums, error) { return c.listGen.GetNewest(o, s) },
|
||||
"recent": func(o int, s int) (domain.Albums, error) { return c.listGen.GetRecent(o, s) },
|
||||
"frequent": func(o int, s int) (domain.Albums, error) { return c.listGen.GetFrequent(o, s) },
|
||||
"highest": func(o int, s int) (domain.Albums, error) { return c.listGen.GetHighest(o, s) },
|
||||
}
|
||||
}
|
||||
|
||||
@ -48,9 +48,9 @@ func (c *AlbumListController) GetAlbumList() {
|
||||
c.SendError(responses.ERROR_GENERIC, "Internal Error")
|
||||
}
|
||||
|
||||
albumList := make([]responses.Child, len(*albums))
|
||||
albumList := make([]responses.Child, len(albums))
|
||||
|
||||
for i, al := range *albums {
|
||||
for i, al := range albums {
|
||||
albumList[i].Id = al.Id
|
||||
albumList[i].Title = al.Name
|
||||
albumList[i].Parent = al.ArtistId
|
||||
@ -80,9 +80,9 @@ func (c *AlbumListController) GetStarred() {
|
||||
|
||||
response := c.NewEmpty()
|
||||
response.Starred = &responses.Starred{}
|
||||
response.Starred.Album = make([]responses.Child, len(*albums))
|
||||
response.Starred.Album = make([]responses.Child, len(albums))
|
||||
|
||||
for i, entry := range *albums {
|
||||
for i, entry := range albums {
|
||||
response.Starred.Album[i] = c.ToChild(entry)
|
||||
}
|
||||
|
||||
@ -98,8 +98,8 @@ func (c *AlbumListController) GetNowPlaying() {
|
||||
|
||||
response := c.NewEmpty()
|
||||
response.NowPlaying = &responses.NowPlaying{}
|
||||
response.NowPlaying.Entry = make([]responses.NowPlayingEntry, len(*npInfos))
|
||||
for i, entry := range *npInfos {
|
||||
response.NowPlaying.Entry = make([]responses.NowPlayingEntry, len(npInfos))
|
||||
for i, entry := range npInfos {
|
||||
response.NowPlaying.Entry[i].Child = c.ToChild(entry)
|
||||
response.NowPlaying.Entry[i].UserName = entry.UserName
|
||||
response.NowPlaying.Entry[i].MinutesAgo = entry.MinutesAgo
|
||||
|
@ -28,8 +28,8 @@ type AlbumRepository interface {
|
||||
Put(m *Album) error
|
||||
Get(id string) (*Album, error)
|
||||
FindByArtist(artistId string) (*Albums, error)
|
||||
GetAll(QueryOptions) (*Albums, error)
|
||||
GetAll(QueryOptions) (Albums, error)
|
||||
PurgeInactive(active Albums) ([]string, error)
|
||||
GetAllIds() (*[]string, error)
|
||||
GetAllIds() ([]string, error)
|
||||
GetStarred(QueryOptions) (*Albums, error)
|
||||
}
|
||||
|
@ -10,13 +10,13 @@ import (
|
||||
|
||||
// TODO Use Entries instead of Albums
|
||||
type ListGenerator interface {
|
||||
GetNewest(offset int, size int) (*domain.Albums, error)
|
||||
GetRecent(offset int, size int) (*domain.Albums, error)
|
||||
GetFrequent(offset int, size int) (*domain.Albums, error)
|
||||
GetHighest(offset int, size int) (*domain.Albums, error)
|
||||
GetRandom(offset int, size int) (*domain.Albums, error)
|
||||
GetStarred() (*Entries, error)
|
||||
GetNowPlaying() (*Entries, error)
|
||||
GetNewest(offset int, size int) (domain.Albums, error)
|
||||
GetRecent(offset int, size int) (domain.Albums, error)
|
||||
GetFrequent(offset int, size int) (domain.Albums, error)
|
||||
GetHighest(offset int, size int) (domain.Albums, error)
|
||||
GetRandom(offset int, size int) (domain.Albums, error)
|
||||
GetStarred() (Entries, error)
|
||||
GetNowPlaying() (Entries, error)
|
||||
}
|
||||
|
||||
func NewListGenerator(alr domain.AlbumRepository, mfr domain.MediaFileRepository, npr NowPlayingRepository) ListGenerator {
|
||||
@ -29,53 +29,53 @@ type listGenerator struct {
|
||||
npRepo NowPlayingRepository
|
||||
}
|
||||
|
||||
func (g listGenerator) query(qo domain.QueryOptions, offset int, size int) (*domain.Albums, error) {
|
||||
func (g listGenerator) query(qo domain.QueryOptions, offset int, size int) (domain.Albums, error) {
|
||||
qo.Offset = offset
|
||||
qo.Size = size
|
||||
return g.albumRepo.GetAll(qo)
|
||||
}
|
||||
|
||||
func (g listGenerator) GetNewest(offset int, size int) (*domain.Albums, error) {
|
||||
func (g listGenerator) GetNewest(offset int, size int) (domain.Albums, error) {
|
||||
qo := domain.QueryOptions{SortBy: "CreatedAt", Desc: true, Alpha: true}
|
||||
return g.query(qo, offset, size)
|
||||
}
|
||||
|
||||
func (g listGenerator) GetRecent(offset int, size int) (*domain.Albums, error) {
|
||||
func (g listGenerator) GetRecent(offset int, size int) (domain.Albums, error) {
|
||||
qo := domain.QueryOptions{SortBy: "PlayDate", Desc: true, Alpha: true}
|
||||
return g.query(qo, offset, size)
|
||||
}
|
||||
|
||||
func (g listGenerator) GetFrequent(offset int, size int) (*domain.Albums, error) {
|
||||
func (g listGenerator) GetFrequent(offset int, size int) (domain.Albums, error) {
|
||||
qo := domain.QueryOptions{SortBy: "PlayCount", Desc: true}
|
||||
return g.query(qo, offset, size)
|
||||
}
|
||||
|
||||
func (g listGenerator) GetHighest(offset int, size int) (*domain.Albums, error) {
|
||||
func (g listGenerator) GetHighest(offset int, size int) (domain.Albums, error) {
|
||||
qo := domain.QueryOptions{SortBy: "Rating", Desc: true}
|
||||
return g.query(qo, offset, size)
|
||||
}
|
||||
|
||||
func (g listGenerator) GetRandom(offset int, size int) (*domain.Albums, error) {
|
||||
func (g listGenerator) GetRandom(offset int, size int) (domain.Albums, error) {
|
||||
ids, err := g.albumRepo.GetAllIds()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
size = utils.MinInt(size, len(*ids))
|
||||
size = utils.MinInt(size, len(ids))
|
||||
perm := rand.Perm(size)
|
||||
r := make(domain.Albums, size)
|
||||
|
||||
for i := 0; i < size; i++ {
|
||||
v := perm[i]
|
||||
al, err := g.albumRepo.Get((*ids)[v])
|
||||
al, err := g.albumRepo.Get((ids)[v])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
r[i] = *al
|
||||
}
|
||||
return &r, nil
|
||||
return r, nil
|
||||
}
|
||||
|
||||
func (g listGenerator) GetStarred() (*Entries, error) {
|
||||
func (g listGenerator) GetStarred() (Entries, error) {
|
||||
albums, err := g.albumRepo.GetStarred(domain.QueryOptions{})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@ -86,10 +86,10 @@ func (g listGenerator) GetStarred() (*Entries, error) {
|
||||
entries[i] = FromAlbum(&al)
|
||||
}
|
||||
|
||||
return &entries, nil
|
||||
return entries, nil
|
||||
}
|
||||
|
||||
func (g listGenerator) GetNowPlaying() (*Entries, error) {
|
||||
func (g listGenerator) GetNowPlaying() (Entries, error) {
|
||||
npInfo, err := g.npRepo.GetAll()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@ -107,5 +107,5 @@ func (g listGenerator) GetNowPlaying() (*Entries, error) {
|
||||
entries[i].PlayerName = np.PlayerName
|
||||
|
||||
}
|
||||
return &entries, nil
|
||||
return entries, nil
|
||||
}
|
||||
|
@ -35,13 +35,13 @@ func (r *albumRepository) FindByArtist(artistId string) (*domain.Albums, error)
|
||||
return &as, err
|
||||
}
|
||||
|
||||
func (r *albumRepository) GetAll(options domain.QueryOptions) (*domain.Albums, error) {
|
||||
func (r *albumRepository) GetAll(options domain.QueryOptions) (domain.Albums, error) {
|
||||
var as = make(domain.Albums, 0)
|
||||
err := r.loadAll(&as, options)
|
||||
return &as, err
|
||||
return as, err
|
||||
}
|
||||
|
||||
func (r *albumRepository) GetAllIds() (*[]string, error) {
|
||||
func (r *albumRepository) GetAllIds() ([]string, error) {
|
||||
idMap, err := r.getAllIds()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@ -54,7 +54,7 @@ func (r *albumRepository) GetAllIds() (*[]string, error) {
|
||||
i++
|
||||
}
|
||||
|
||||
return &ids, nil
|
||||
return ids, nil
|
||||
}
|
||||
|
||||
func (r *albumRepository) PurgeInactive(active domain.Albums) ([]string, error) {
|
||||
|
@ -51,12 +51,12 @@ func (m *MockAlbum) Get(id string) (*domain.Album, error) {
|
||||
return nil, domain.ErrNotFound
|
||||
}
|
||||
|
||||
func (m *MockAlbum) GetAll(qo domain.QueryOptions) (*domain.Albums, error) {
|
||||
func (m *MockAlbum) GetAll(qo domain.QueryOptions) (domain.Albums, error) {
|
||||
m.Options = qo
|
||||
if m.err {
|
||||
return nil, errors.New("Error!")
|
||||
}
|
||||
return &m.all, nil
|
||||
return m.all, nil
|
||||
}
|
||||
|
||||
func (m *MockAlbum) FindByArtist(artistId string) (*domain.Albums, error) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user