mirror of
https://github.com/navidrome/navidrome.git
synced 2025-04-16 12:10:36 +03:00
Fall back to media file path when sorting
If files cannot be sorted by disc and track id, try by artist then title. One use case is a loose compilation of files with same album, album artist, and no track numbers. File order was then undetermined, in practice depended on insertion order in the database.
This commit is contained in:
parent
cd1c693a23
commit
15b289201a
@ -27,7 +27,7 @@ func NewMediaFileRepository(ctx context.Context, o orm.Ormer) *mediaFileReposito
|
||||
r.tableName = "media_file"
|
||||
r.sortMappings = map[string]string{
|
||||
"artist": "order_artist_name asc, album asc, disc_number asc, track_number asc",
|
||||
"album": "order_album_name asc, disc_number asc, track_number asc",
|
||||
"album": "order_album_name asc, disc_number asc, track_number asc, artist asc, title asc",
|
||||
"random": "RANDOM()",
|
||||
}
|
||||
r.filterMappings = map[string]filterFunc{
|
||||
@ -77,7 +77,7 @@ func (r mediaFileRepository) GetAll(options ...model.QueryOptions) (model.MediaF
|
||||
}
|
||||
|
||||
func (r mediaFileRepository) FindByAlbum(albumId string) (model.MediaFiles, error) {
|
||||
sel := r.selectMediaFile().Where(Eq{"album_id": albumId}).OrderBy("disc_number", "track_number")
|
||||
sel := r.selectMediaFile().Where(Eq{"album_id": albumId}).OrderBy("disc_number", "track_number", "artist", "title")
|
||||
res := model.MediaFiles{}
|
||||
err := r.queryAll(sel, &res)
|
||||
return res, err
|
||||
|
@ -42,8 +42,8 @@ var _ = Describe("MediaRepository", func() {
|
||||
|
||||
It("find mediafiles by album", func() {
|
||||
Expect(mr.FindByAlbum("103")).To(Equal(model.MediaFiles{
|
||||
songRadioactivity,
|
||||
songAntenna,
|
||||
songRadioactivity,
|
||||
}))
|
||||
})
|
||||
|
||||
|
@ -22,7 +22,7 @@ const AlbumShowLayout = (props) => {
|
||||
addLabel={false}
|
||||
reference="albumSong"
|
||||
target="album_id"
|
||||
sort={{ field: 'discNumber asc, trackNumber asc', order: 'ASC' }}
|
||||
sort={{ field: 'album', order: 'ASC' }}
|
||||
perPage={0}
|
||||
pagination={null}
|
||||
>
|
||||
|
Loading…
x
Reference in New Issue
Block a user