From 7ccf6859733cfa9091fbc0a97880ad155b6f23ec Mon Sep 17 00:00:00 2001
From: Deluan <deluan@navidrome.org>
Date: Thu, 14 Dec 2023 21:45:47 -0500
Subject: [PATCH] Fix PreferSortTags

---
 persistence/album_repository.go     | 25 ++++++++++++++-----------
 persistence/mediafile_repository.go | 12 +++++++-----
 2 files changed, 21 insertions(+), 16 deletions(-)

diff --git a/persistence/album_repository.go b/persistence/album_repository.go
index 3ccf80f45..c4aeb7678 100644
--- a/persistence/album_repository.go
+++ b/persistence/album_repository.go
@@ -60,19 +60,22 @@ func NewAlbumRepository(ctx context.Context, db dbx.Builder) model.AlbumReposito
 		"starred":         booleanFilter,
 		"has_rating":      hasRatingFilter,
 	}
-	r.sortMappings = map[string]string{
-		"name":           "order_album_name asc, order_album_artist_name asc",
-		"artist":         "compilation asc, order_album_artist_name asc, order_album_name asc",
-		"random":         "RANDOM()",
-		"max_year":       "coalesce(nullif(original_date,''), cast(max_year as text)), release_date, name, order_album_name asc",
-		"recently_added": recentlyAddedSort(),
-	}
 	if conf.Server.PreferSortTags {
 		r.sortMappings = map[string]string{
-			"name":        "COALESCE(NULLIF(sort_album_name,''),order_album_name)",
-			"artist":      "compilation asc, COALESCE(NULLIF(sort_album_artist_name,''),order_album_artist_name) asc, COALESCE(NULLIF(sort_album_name,''),order_album_name) asc",
-			"albumArtist": "compilation asc, COALESCE(NULLIF(sort_album_artist_name,''),order_album_artist_name) asc, COALESCE(NULLIF(sort_album_name,''),order_album_name) asc",
-			"max_year":    "coalesce(nullif(original_date,''), cast(max_year as text)), release_date, name, COALESCE(NULLIF(sort_album_name,''),order_album_name) asc",
+			"name":           "COALESCE(NULLIF(sort_album_name,''),order_album_name)",
+			"artist":         "compilation asc, COALESCE(NULLIF(sort_album_artist_name,''),order_album_artist_name) asc, COALESCE(NULLIF(sort_album_name,''),order_album_name) asc",
+			"albumArtist":    "compilation asc, COALESCE(NULLIF(sort_album_artist_name,''),order_album_artist_name) asc, COALESCE(NULLIF(sort_album_name,''),order_album_name) asc",
+			"max_year":       "coalesce(nullif(original_date,''), cast(max_year as text)), release_date, name, COALESCE(NULLIF(sort_album_name,''),order_album_name) asc",
+			"random":         "RANDOM()",
+			"recently_added": recentlyAddedSort(),
+		}
+	} else {
+		r.sortMappings = map[string]string{
+			"name":           "order_album_name asc, order_album_artist_name asc",
+			"artist":         "compilation asc, order_album_artist_name asc, order_album_name asc",
+			"max_year":       "coalesce(nullif(original_date,''), cast(max_year as text)), release_date, name, order_album_name asc",
+			"random":         "RANDOM()",
+			"recently_added": recentlyAddedSort(),
 		}
 	}
 
diff --git a/persistence/mediafile_repository.go b/persistence/mediafile_repository.go
index c1da7c1ee..3ff036569 100644
--- a/persistence/mediafile_repository.go
+++ b/persistence/mediafile_repository.go
@@ -31,16 +31,18 @@ func NewMediaFileRepository(ctx context.Context, db dbx.Builder) *mediaFileRepos
 		"title":   fullTextFilter,
 		"starred": booleanFilter,
 	}
-	r.sortMappings = map[string]string{
-		"artist": "order_artist_name asc, order_album_name asc, release_date asc, disc_number asc, track_number asc",
-		"album":  "order_album_name asc, release_date asc, disc_number asc, track_number asc, order_artist_name asc, title asc",
-		"random": "RANDOM()",
-	}
 	if conf.Server.PreferSortTags {
 		r.sortMappings = map[string]string{
 			"title":  "COALESCE(NULLIF(sort_title,''),title)",
 			"artist": "COALESCE(NULLIF(sort_artist_name,''),order_artist_name) asc, COALESCE(NULLIF(sort_album_name,''),order_album_name) asc, release_date asc, disc_number asc, track_number asc",
 			"album":  "COALESCE(NULLIF(sort_album_name,''),order_album_name) asc, release_date asc, disc_number asc, track_number asc, COALESCE(NULLIF(sort_artist_name,''),order_artist_name) asc, COALESCE(NULLIF(sort_title,''),title) asc",
+			"random": "RANDOM()",
+		}
+	} else {
+		r.sortMappings = map[string]string{
+			"artist": "order_artist_name asc, order_album_name asc, release_date asc, disc_number asc, track_number asc",
+			"album":  "order_album_name asc, release_date asc, disc_number asc, track_number asc, order_artist_name asc, title asc",
+			"random": "RANDOM()",
 		}
 	}
 	return r