From 223e88d481b4b302b15bdccc464bf5615600e54f Mon Sep 17 00:00:00 2001
From: Deluan <deluan@navidrome.org>
Date: Sun, 23 Mar 2025 11:37:20 -0400
Subject: [PATCH] chore: remove some BFR-related TODOs that are not valid
 anymore

Signed-off-by: Deluan <deluan@navidrome.org>
---
 conf/configuration.go                   | 1 -
 core/artwork/artwork_internal_test.go   | 2 +-
 core/scrobbler/play_tracker_test.go     | 1 -
 model/album.go                          | 2 +-
 model/mediafile.go                      | 4 ++--
 persistence/album_repository.go         | 1 -
 persistence/artist_repository.go        | 3 +--
 persistence/mediafile_repository.go     | 1 -
 persistence/persistence_suite_test.go   | 7 -------
 persistence/playlist_repository_test.go | 2 +-
 scanner/controller.go                   | 1 -
 server/subsonic/helpers.go              | 1 -
 12 files changed, 6 insertions(+), 20 deletions(-)

diff --git a/conf/configuration.go b/conf/configuration.go
index a75581fca..08008105d 100644
--- a/conf/configuration.go
+++ b/conf/configuration.go
@@ -306,7 +306,6 @@ func Load(noConfigDump bool) {
 		disableExternalServices()
 	}
 
-	// BFR Remove before release
 	if Server.Scanner.Extractor != consts.DefaultScannerExtractor {
 		log.Warn(fmt.Sprintf("Extractor '%s' is not implemented, using 'taglib'", Server.Scanner.Extractor))
 		Server.Scanner.Extractor = consts.DefaultScannerExtractor
diff --git a/core/artwork/artwork_internal_test.go b/core/artwork/artwork_internal_test.go
index 65228ace5..462027082 100644
--- a/core/artwork/artwork_internal_test.go
+++ b/core/artwork/artwork_internal_test.go
@@ -15,7 +15,7 @@ import (
 	. "github.com/onsi/gomega"
 )
 
-// BFR Fix tests
+// TODO Fix tests
 var _ = XDescribe("Artwork", func() {
 	var aw *artwork
 	var ds model.DataStore
diff --git a/core/scrobbler/play_tracker_test.go b/core/scrobbler/play_tracker_test.go
index a4bd7cec2..da1f96864 100644
--- a/core/scrobbler/play_tracker_test.go
+++ b/core/scrobbler/play_tracker_test.go
@@ -239,7 +239,6 @@ func (f *fakeScrobbler) Scrobble(ctx context.Context, userId string, s Scrobble)
 	return nil
 }
 
-// BFR This is duplicated in a few places
 func _p(id, name string, sortName ...string) model.Participant {
 	p := model.Participant{Artist: model.Artist{ID: id, Name: name}}
 	if len(sortName) > 0 {
diff --git a/model/album.go b/model/album.go
index 4ac976e24..c9dc022cb 100644
--- a/model/album.go
+++ b/model/album.go
@@ -17,7 +17,7 @@ type Album struct {
 	Name          string `structs:"name" json:"name"`
 	EmbedArtPath  string `structs:"embed_art_path" json:"-"`
 	AlbumArtistID string `structs:"album_artist_id" json:"albumArtistId"` // Deprecated, use Participants
-	// BFR Rename to AlbumArtistDisplayName
+	// AlbumArtist is the display name used for the album artist.
 	AlbumArtist          string   `structs:"album_artist" json:"albumArtist"`
 	MaxYear              int      `structs:"max_year" json:"maxYear"`
 	MinYear              int      `structs:"min_year" json:"minYear"`
diff --git a/model/mediafile.go b/model/mediafile.go
index 795657466..896442436 100644
--- a/model/mediafile.go
+++ b/model/mediafile.go
@@ -31,10 +31,10 @@ type MediaFile struct {
 	Title       string `structs:"title" json:"title"`
 	Album       string `structs:"album" json:"album"`
 	ArtistID    string `structs:"artist_id" json:"artistId"` // Deprecated: Use Participants instead
-	// BFR Rename to ArtistDisplayName
+	// Artist is the display name used for the artist.
 	Artist        string `structs:"artist" json:"artist"`
 	AlbumArtistID string `structs:"album_artist_id" json:"albumArtistId"` // Deprecated: Use Participants instead
-	// BFR Rename to AlbumArtistDisplayName
+	// AlbumArtist is the display name used for the album artist.
 	AlbumArtist          string  `structs:"album_artist" json:"albumArtist"`
 	AlbumID              string  `structs:"album_id" json:"albumId"`
 	HasCoverArt          bool    `structs:"has_cover_art" json:"hasCoverArt"`
diff --git a/persistence/album_repository.go b/persistence/album_repository.go
index b29a44701..0f2a46dec 100644
--- a/persistence/album_repository.go
+++ b/persistence/album_repository.go
@@ -184,7 +184,6 @@ func allRolesFilter(_ string, value interface{}) Sqlizer {
 func (r *albumRepository) CountAll(options ...model.QueryOptions) (int64, error) {
 	sql := r.newSelect()
 	sql = r.withAnnotation(sql, "album.id")
-	// BFR WithParticipants (for filtering by name)?
 	return r.count(sql, options...)
 }
 
diff --git a/persistence/artist_repository.go b/persistence/artist_repository.go
index dd3f31b00..7602be381 100644
--- a/persistence/artist_repository.go
+++ b/persistence/artist_repository.go
@@ -85,7 +85,7 @@ func (a *dbArtist) PostMapArgs(m map[string]any) error {
 	m["full_text"] = formatFullText(a.Name, a.SortArtistName)
 
 	// Do not override the sort_artist_name and mbz_artist_id fields if they are empty
-	// BFR: Better way to handle this?
+	// TODO: Better way to handle this?
 	if v, ok := m["sort_artist_name"]; !ok || v.(string) == "" {
 		delete(m, "sort_artist_name")
 	}
@@ -134,7 +134,6 @@ func roleFilter(_ string, role any) Sqlizer {
 func (r *artistRepository) selectArtist(options ...model.QueryOptions) SelectBuilder {
 	query := r.newSelect(options...).Columns("artist.*")
 	query = r.withAnnotation(query, "artist.id")
-	// BFR How to handle counts and sizes (per role)?
 	return query
 }
 
diff --git a/persistence/mediafile_repository.go b/persistence/mediafile_repository.go
index ef4507877..ebf07ce17 100644
--- a/persistence/mediafile_repository.go
+++ b/persistence/mediafile_repository.go
@@ -105,7 +105,6 @@ var mediaFileFilter = sync.OnceValue(func() map[string]filterFunc {
 func (r *mediaFileRepository) CountAll(options ...model.QueryOptions) (int64, error) {
 	query := r.newSelect()
 	query = r.withAnnotation(query, "media_file.id")
-	// BFR WithParticipants (for filtering by name)?
 	return r.count(query, options...)
 }
 
diff --git a/persistence/persistence_suite_test.go b/persistence/persistence_suite_test.go
index 609904b49..43e4c292b 100644
--- a/persistence/persistence_suite_test.go
+++ b/persistence/persistence_suite_test.go
@@ -29,13 +29,6 @@ func TestPersistence(t *testing.T) {
 	RunSpecs(t, "Persistence Suite")
 }
 
-// BFR Test tags
-//var (
-//	genreElectronic = model.Genre{ID: "gn-1", Name: "Electronic"}
-//	genreRock       = model.Genre{ID: "gn-2", Name: "Rock"}
-//	testGenres      = model.Genres{genreElectronic, genreRock}
-//)
-
 func mf(mf model.MediaFile) model.MediaFile {
 	mf.Tags = model.Tags{}
 	mf.LibraryID = 1
diff --git a/persistence/playlist_repository_test.go b/persistence/playlist_repository_test.go
index 85a87ece7..5a82964c9 100644
--- a/persistence/playlist_repository_test.go
+++ b/persistence/playlist_repository_test.go
@@ -145,7 +145,7 @@ var _ = Describe("PlaylistRepository", func() {
 			})
 		})
 
-		// BFR Validate these tests
+		// TODO Validate these tests
 		XContext("child smart playlists", func() {
 			When("refresh day has expired", func() {
 				It("should refresh tracks for smart playlist referenced in parent smart playlist criteria", func() {
diff --git a/scanner/controller.go b/scanner/controller.go
index 84ea8e606..e3e008483 100644
--- a/scanner/controller.go
+++ b/scanner/controller.go
@@ -98,7 +98,6 @@ type ProgressInfo struct {
 
 type scanner interface {
 	scanAll(ctx context.Context, fullScan bool, progress chan<- *ProgressInfo)
-	// BFR: scanFolders(ctx context.Context, lib model.Lib, folders []string, progress chan<- *ScannerStatus)
 }
 
 type controller struct {
diff --git a/server/subsonic/helpers.go b/server/subsonic/helpers.go
index fa98a985b..56b65f894 100644
--- a/server/subsonic/helpers.go
+++ b/server/subsonic/helpers.go
@@ -235,7 +235,6 @@ func osChildFromMediaFile(ctx context.Context, mf model.MediaFile) *responses.Op
 	child.BitDepth = int32(mf.BitDepth)
 	child.Genres = toItemGenres(mf.Genres)
 	child.Moods = mf.Tags.Values(model.TagMood)
-	// BFR What if Child is an Album and not a Song?
 	child.DisplayArtist = mf.Artist
 	child.Artists = artistRefs(mf.Participants[model.RoleArtist])
 	child.DisplayAlbumArtist = mf.AlbumArtist