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:
lbonn
2020-12-18 16:48:36 +01:00
committed by Deluan Quintão
parent cd1c693a23
commit 15b289201a
3 changed files with 4 additions and 4 deletions
+2 -2
View File
@@ -27,7 +27,7 @@ func NewMediaFileRepository(ctx context.Context, o orm.Ormer) *mediaFileReposito
r.tableName = "media_file" r.tableName = "media_file"
r.sortMappings = map[string]string{ r.sortMappings = map[string]string{
"artist": "order_artist_name asc, album asc, disc_number asc, track_number asc", "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()", "random": "RANDOM()",
} }
r.filterMappings = map[string]filterFunc{ 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) { 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{} res := model.MediaFiles{}
err := r.queryAll(sel, &res) err := r.queryAll(sel, &res)
return res, err return res, err
+1 -1
View File
@@ -42,8 +42,8 @@ var _ = Describe("MediaRepository", func() {
It("find mediafiles by album", func() { It("find mediafiles by album", func() {
Expect(mr.FindByAlbum("103")).To(Equal(model.MediaFiles{ Expect(mr.FindByAlbum("103")).To(Equal(model.MediaFiles{
songRadioactivity,
songAntenna, songAntenna,
songRadioactivity,
})) }))
}) })
+1 -1
View File
@@ -22,7 +22,7 @@ const AlbumShowLayout = (props) => {
addLabel={false} addLabel={false}
reference="albumSong" reference="albumSong"
target="album_id" target="album_id"
sort={{ field: 'discNumber asc, trackNumber asc', order: 'ASC' }} sort={{ field: 'album', order: 'ASC' }}
perPage={0} perPage={0}
pagination={null} pagination={null}
> >