Switched to use a count query instead of serializing all libraries.
This commit is contained in:
parent
7c4127f87a
commit
ff1cc72c48
1 changed files with 9 additions and 5 deletions
|
|
@ -173,16 +173,20 @@ public class GenreRepository : IGenreRepository
|
||||||
{
|
{
|
||||||
var ageRating = await _context.AppUser.GetUserAgeRestriction(userId);
|
var ageRating = await _context.AppUser.GetUserAgeRestriction(userId);
|
||||||
|
|
||||||
var libs = await _context.Library.Includes(LibraryIncludes.AppUser).ToListAsync();
|
var allLibrariesCount = await _context.Library.CountAsync();
|
||||||
var userLibs = libs.Where(lib => lib.AppUsers.Any(user => user.Id == userId))
|
var userLibs = await _context.Library
|
||||||
.Select(lib => lib.Id).ToList();
|
.Includes(LibraryIncludes.AppUser)
|
||||||
|
.Where(lib => lib.AppUsers.Any(user => user.Id == userId))
|
||||||
|
.Select(lib => lib.Id)
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
var query = _context.Genre.RestrictAgainstAgeRestriction(ageRating);
|
var query = _context.Genre.RestrictAgainstAgeRestriction(ageRating);
|
||||||
|
|
||||||
IQueryable<BrowseGenreDto> finalQuery;
|
IQueryable<BrowseGenreDto> 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)) ||
|
query = query.Where(s => s.Chapters.Any(cp => seriesIds.Contains(cp.Volume.SeriesId)) ||
|
||||||
s.SeriesMetadatas.Any(sm => seriesIds.Contains(sm.SeriesId)));
|
s.SeriesMetadatas.Any(sm => seriesIds.Contains(sm.SeriesId)));
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue