From 28dc98dec46a83d6163c5943d2522015b76969c4 Mon Sep 17 00:00:00 2001 From: Deluan Date: Sat, 25 Nov 2023 23:08:20 -0500 Subject: [PATCH] Revert "Replace `COUNT(DISTINCT primary_key)` with `COUNT(*)`" Genres are required as part of the count queries, so filter by genres work --- persistence/album_repository.go | 1 + persistence/artist_repository.go | 1 + persistence/mediafile_repository.go | 1 + persistence/sql_base_repository.go | 3 ++- 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/persistence/album_repository.go b/persistence/album_repository.go index ca05bd28322..e2eae06d4f0 100644 --- a/persistence/album_repository.go +++ b/persistence/album_repository.go @@ -76,6 +76,7 @@ func artistFilter(field string, value interface{}) Sqlizer { func (r *albumRepository) CountAll(options ...model.QueryOptions) (int64, error) { sql := r.newSelectWithAnnotation("album.id") + sql = r.withGenres(sql) // Required for filtering by genre return r.count(sql, options...) } diff --git a/persistence/artist_repository.go b/persistence/artist_repository.go index 6097ae57636..9b0d72316d1 100644 --- a/persistence/artist_repository.go +++ b/persistence/artist_repository.go @@ -52,6 +52,7 @@ func (r *artistRepository) selectArtist(options ...model.QueryOptions) SelectBui func (r *artistRepository) CountAll(options ...model.QueryOptions) (int64, error) { sql := r.newSelectWithAnnotation("artist.id") + sql = r.withGenres(sql) // Required for filtering by genre return r.count(sql, options...) } diff --git a/persistence/mediafile_repository.go b/persistence/mediafile_repository.go index 783beb7f7fb..9ebbf68b3ec 100644 --- a/persistence/mediafile_repository.go +++ b/persistence/mediafile_repository.go @@ -40,6 +40,7 @@ func NewMediaFileRepository(ctx context.Context, o orm.QueryExecutor) *mediaFile func (r *mediaFileRepository) CountAll(options ...model.QueryOptions) (int64, error) { sql := r.newSelectWithAnnotation("media_file.id") + sql = r.withGenres(sql) // Required for filtering by genre return r.count(sql, options...) } diff --git a/persistence/sql_base_repository.go b/persistence/sql_base_repository.go index 2774089ae05..d0ecd37fbc2 100644 --- a/persistence/sql_base_repository.go +++ b/persistence/sql_base_repository.go @@ -181,7 +181,8 @@ func (r sqlRepository) exists(existsQuery SelectBuilder) (bool, error) { func (r sqlRepository) count(countQuery SelectBuilder, options ...model.QueryOptions) (int64, error) { countQuery = countQuery. - RemoveColumns().Columns("count(*) as count").From(r.tableName) + RemoveColumns().Columns("count(distinct " + r.tableName + ".id) as count"). + From(r.tableName) countQuery = r.applyFilters(countQuery, options...) var res struct{ Count int64 } err := r.queryOne(countQuery, &res)