mirror of
https://github.com/navidrome/navidrome.git
synced 2025-12-23 23:18:05 -05:00
fix(server): don't override /song routes
Signed-off-by: Deluan <deluan@navidrome.org>
This commit is contained in:
@@ -217,8 +217,33 @@ func (db *MockDataStore) WithTxImmediate(block func(tx model.DataStore) error, l
|
||||
return block(db)
|
||||
}
|
||||
|
||||
func (db *MockDataStore) Resource(context.Context, any) model.ResourceRepository {
|
||||
return struct{ model.ResourceRepository }{}
|
||||
func (db *MockDataStore) Resource(ctx context.Context, m any) model.ResourceRepository {
|
||||
switch m.(type) {
|
||||
case model.MediaFile, *model.MediaFile:
|
||||
return db.MediaFile(ctx).(model.ResourceRepository)
|
||||
case model.Album, *model.Album:
|
||||
return db.Album(ctx).(model.ResourceRepository)
|
||||
case model.Artist, *model.Artist:
|
||||
return db.Artist(ctx).(model.ResourceRepository)
|
||||
case model.User, *model.User:
|
||||
return db.User(ctx).(model.ResourceRepository)
|
||||
case model.Playlist, *model.Playlist:
|
||||
return db.Playlist(ctx).(model.ResourceRepository)
|
||||
case model.Radio, *model.Radio:
|
||||
return db.Radio(ctx).(model.ResourceRepository)
|
||||
case model.Share, *model.Share:
|
||||
return db.Share(ctx).(model.ResourceRepository)
|
||||
case model.Genre, *model.Genre:
|
||||
return db.Genre(ctx).(model.ResourceRepository)
|
||||
case model.Tag, *model.Tag:
|
||||
return db.Tag(ctx).(model.ResourceRepository)
|
||||
case model.Transcoding, *model.Transcoding:
|
||||
return db.Transcoding(ctx).(model.ResourceRepository)
|
||||
case model.Player, *model.Player:
|
||||
return db.Player(ctx).(model.ResourceRepository)
|
||||
default:
|
||||
return struct{ model.ResourceRepository }{}
|
||||
}
|
||||
}
|
||||
|
||||
func (db *MockDataStore) GC(context.Context) error {
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"slices"
|
||||
"time"
|
||||
|
||||
"github.com/deluan/rest"
|
||||
"github.com/navidrome/navidrome/model"
|
||||
"github.com/navidrome/navidrome/model/id"
|
||||
"github.com/navidrome/navidrome/utils/slice"
|
||||
@@ -76,9 +77,14 @@ func (m *MockMediaFileRepo) GetAll(...model.QueryOptions) (model.MediaFiles, err
|
||||
return nil, errors.New("error")
|
||||
}
|
||||
values := slices.Collect(maps.Values(m.Data))
|
||||
return slice.Map(values, func(p *model.MediaFile) model.MediaFile {
|
||||
result := slice.Map(values, func(p *model.MediaFile) model.MediaFile {
|
||||
return *p
|
||||
}), nil
|
||||
})
|
||||
// Sort by ID to ensure deterministic ordering for tests
|
||||
slices.SortFunc(result, func(a, b model.MediaFile) int {
|
||||
return cmp.Compare(a.ID, b.ID)
|
||||
})
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (m *MockMediaFileRepo) Put(mf *model.MediaFile) error {
|
||||
@@ -196,4 +202,30 @@ func (m *MockMediaFileRepo) DeleteAllMissing() (int64, error) {
|
||||
return count, nil
|
||||
}
|
||||
|
||||
// ResourceRepository methods
|
||||
func (m *MockMediaFileRepo) Count(...rest.QueryOptions) (int64, error) {
|
||||
return m.CountAll()
|
||||
}
|
||||
|
||||
func (m *MockMediaFileRepo) Read(id string) (interface{}, error) {
|
||||
mf, err := m.Get(id)
|
||||
if errors.Is(err, model.ErrNotFound) {
|
||||
return nil, rest.ErrNotFound
|
||||
}
|
||||
return mf, err
|
||||
}
|
||||
|
||||
func (m *MockMediaFileRepo) ReadAll(...rest.QueryOptions) (interface{}, error) {
|
||||
return m.GetAll()
|
||||
}
|
||||
|
||||
func (m *MockMediaFileRepo) EntityName() string {
|
||||
return "mediafile"
|
||||
}
|
||||
|
||||
func (m *MockMediaFileRepo) NewInstance() interface{} {
|
||||
return &model.MediaFile{}
|
||||
}
|
||||
|
||||
var _ model.MediaFileRepository = (*MockMediaFileRepo)(nil)
|
||||
var _ model.ResourceRepository = (*MockMediaFileRepo)(nil)
|
||||
|
||||
Reference in New Issue
Block a user