From cfa1d7fa81dbbee155731e2ce5cdcbc38cda7f21 Mon Sep 17 00:00:00 2001 From: Deluan Date: Mon, 23 Jun 2025 10:26:15 -0400 Subject: [PATCH] fix(scanner): filter folders by num_audio_files to ensure accurate statistics Signed-off-by: Deluan --- db/migrations/20250701010103_add_library_stats.go | 2 +- persistence/library_repository.go | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/db/migrations/20250701010103_add_library_stats.go b/db/migrations/20250701010103_add_library_stats.go index f33b0ff26..8025229cc 100644 --- a/db/migrations/20250701010103_add_library_stats.go +++ b/db/migrations/20250701010103_add_library_stats.go @@ -30,7 +30,7 @@ update library set join artist a on la.artist_id = a.id where la.library_id = library.id and a.missing = 0 ), - total_folders = (select count(*) from folder where library_id = library.id and missing = 0), + total_folders = (select count(*) from folder where library_id = library.id and missing = 0 and num_audio_files > 0), total_files = ( select ifnull(sum(num_audio_files + num_playlists + json_array_length(image_files)),0) from folder where library_id = library.id and missing = 0 diff --git a/persistence/library_repository.go b/persistence/library_repository.go index fdeccc953..9c305e52b 100644 --- a/persistence/library_repository.go +++ b/persistence/library_repository.go @@ -164,10 +164,15 @@ func (r *libraryRepository) RefreshStats(id int) error { Where(Eq{"la.library_id": id, "a.missing": false}), &artistsRes) }, func() error { - return r.queryOne(Select("count(*) as count").From("folder").Where(Eq{"library_id": id, "missing": false}), &foldersRes) + return r.queryOne(Select("count(*) as count").From("folder"). + Where(And{ + Eq{"library_id": id, "missing": false}, + Gt{"num_audio_files": 0}, + }), &foldersRes) }, func() error { - return r.queryOne(Select("ifnull(sum(num_audio_files + num_playlists + json_array_length(image_files)),0) as count").From("folder").Where(Eq{"library_id": id, "missing": false}), &filesRes) + return r.queryOne(Select("ifnull(sum(num_audio_files + num_playlists + json_array_length(image_files)),0) as count"). + From("folder").Where(Eq{"library_id": id, "missing": false}), &filesRes) }, func() error { return r.queryOne(Select("count(*) as count").From("media_file").Where(Eq{"library_id": id, "missing": true}), &missingRes)