From ff1cc72c48f0811b17c0ddbe954f369fce89083b Mon Sep 17 00:00:00 2001 From: Joseph Milazzo Date: Tue, 24 Jun 2025 07:07:37 -0500 Subject: [PATCH] Switched to use a count query instead of serializing all libraries. --- API/Data/Repositories/GenreRepository.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/API/Data/Repositories/GenreRepository.cs b/API/Data/Repositories/GenreRepository.cs index 6f546abe7..3c7200530 100644 --- a/API/Data/Repositories/GenreRepository.cs +++ b/API/Data/Repositories/GenreRepository.cs @@ -173,16 +173,20 @@ public class GenreRepository : IGenreRepository { var ageRating = await _context.AppUser.GetUserAgeRestriction(userId); - var libs = await _context.Library.Includes(LibraryIncludes.AppUser).ToListAsync(); - var userLibs = libs.Where(lib => lib.AppUsers.Any(user => user.Id == userId)) - .Select(lib => lib.Id).ToList(); + var allLibrariesCount = await _context.Library.CountAsync(); + var userLibs = await _context.Library + .Includes(LibraryIncludes.AppUser) + .Where(lib => lib.AppUsers.Any(user => user.Id == userId)) + .Select(lib => lib.Id) + .ToListAsync(); var query = _context.Genre.RestrictAgainstAgeRestriction(ageRating); IQueryable finalQuery; - if (libs.Count != userLibs.Count) + var seriesIds = _context.Series.Where(s => userLibs.Contains(s.LibraryId)).Select(s => s.Id); + if (allLibrariesCount != userLibs.Count) { - var seriesIds = _context.Series.Where(s => userLibs.Contains(s.LibraryId)).Select(s => s.Id); + query = query.Where(s => s.Chapters.Any(cp => seriesIds.Contains(cp.Volume.SeriesId)) || s.SeriesMetadatas.Any(sm => seriesIds.Contains(sm.SeriesId)));