mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-05-04 07:46:32 +01:00
Optimize Collection Grouping, NextUp and Latest queries
This commit is contained in:
@@ -564,25 +564,35 @@ public class UserLibraryController : BaseJellyfinApiController
|
||||
},
|
||||
dtoOptions);
|
||||
|
||||
var dtos = list.Select(i =>
|
||||
var resolvedItems = new BaseItem[list.Count];
|
||||
var childCounts = new int[list.Count];
|
||||
for (int i = 0; i < list.Count; i++)
|
||||
{
|
||||
var item = i.Item2[0];
|
||||
var tuple = list[i];
|
||||
var item = tuple.Item2[0];
|
||||
var childCount = 0;
|
||||
|
||||
if (i.Item1 is not null && (i.Item2.Count > 1 || i.Item1 is MusicAlbum || i.Item1 is Series ))
|
||||
if (tuple.Item1 is not null && (tuple.Item2.Count > 1 || tuple.Item1 is MusicAlbum || tuple.Item1 is Series))
|
||||
{
|
||||
item = i.Item1;
|
||||
childCount = i.Item2.Count;
|
||||
item = tuple.Item1;
|
||||
childCount = tuple.Item2.Count;
|
||||
}
|
||||
|
||||
var dto = _dtoService.GetBaseItemDto(item, dtoOptions, user);
|
||||
resolvedItems[i] = item;
|
||||
childCounts[i] = childCount;
|
||||
}
|
||||
|
||||
dto.ChildCount = childCount;
|
||||
// Fetch DTOs without visibility check since we've already done that in GetLatestItems and restore child counts afterwards
|
||||
var dtos = _dtoService.GetBaseItemDtos(resolvedItems, dtoOptions, user, skipVisibilityCheck: true);
|
||||
for (int i = 0; i < dtos.Count; i++)
|
||||
{
|
||||
if (childCounts[i] > 0)
|
||||
{
|
||||
dtos[i].ChildCount = childCounts[i];
|
||||
}
|
||||
}
|
||||
|
||||
return dto;
|
||||
});
|
||||
|
||||
return Ok(dtos);
|
||||
return Ok(dtos.AsEnumerable());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user