aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Api/Controllers/LibraryController.cs
diff options
context:
space:
mode:
authorShadowghost <Ghost_of_Stone@web.de>2026-01-17 17:10:07 +0100
committerShadowghost <Ghost_of_Stone@web.de>2026-01-18 19:48:46 +0100
commit5996c4afce11249804d24f1caa3a99b390543c4d (patch)
treed84b98428d95c801492b1354571e2ab3fc0cc99b /Jellyfin.Api/Controllers/LibraryController.cs
parentdfa78590c2899c7e74b142ebbced4140a354aed0 (diff)
Complete LinkedChildren integration and batch DTO optimizations
This commit integrates remaining performance changes: - Add batch user data fetching in DtoService to reduce N+1 queries - Add GetNextUpEpisodesBatch in TVSeriesManager for efficient batch retrieval - Update Video/Movie/BoxSet to use LibraryManager for alternate versions - Transition LinkedChild to use ItemId instead of Path (obsolete Path/LibraryItemId) - Update providers and controllers for LinkedChildren-based references - Add NextUpEpisodeBatchResult for batched episode queries - Integrate IDescendantQueryProvider in SqliteDatabaseProvider
Diffstat (limited to 'Jellyfin.Api/Controllers/LibraryController.cs')
-rw-r--r--Jellyfin.Api/Controllers/LibraryController.cs37
1 files changed, 9 insertions, 28 deletions
diff --git a/Jellyfin.Api/Controllers/LibraryController.cs b/Jellyfin.Api/Controllers/LibraryController.cs
index 558e1c6c80..cb0d449aa4 100644
--- a/Jellyfin.Api/Controllers/LibraryController.cs
+++ b/Jellyfin.Api/Controllers/LibraryController.cs
@@ -456,19 +456,18 @@ public class LibraryController : BaseJellyfinApiController
? null
: _userManager.GetUserById(userId.Value);
- var counts = new ItemCounts
+ var query = new InternalItemsQuery(user)
{
- AlbumCount = GetCount(BaseItemKind.MusicAlbum, user, isFavorite),
- EpisodeCount = GetCount(BaseItemKind.Episode, user, isFavorite),
- MovieCount = GetCount(BaseItemKind.Movie, user, isFavorite),
- SeriesCount = GetCount(BaseItemKind.Series, user, isFavorite),
- SongCount = GetCount(BaseItemKind.Audio, user, isFavorite),
- MusicVideoCount = GetCount(BaseItemKind.MusicVideo, user, isFavorite),
- BoxSetCount = GetCount(BaseItemKind.BoxSet, user, isFavorite),
- BookCount = GetCount(BaseItemKind.Book, user, isFavorite)
+ Recursive = true,
+ IsVirtualItem = false,
+ IsFavorite = isFavorite,
+ DtoOptions = new DtoOptions(false)
+ {
+ EnableImages = false
+ }
};
- return counts;
+ return _libraryManager.GetItemCounts(query);
}
/// <summary>
@@ -937,24 +936,6 @@ public class LibraryController : BaseJellyfinApiController
return result;
}
- private int GetCount(BaseItemKind itemKind, User? user, bool? isFavorite)
- {
- var query = new InternalItemsQuery(user)
- {
- IncludeItemTypes = new[] { itemKind },
- Limit = 0,
- Recursive = true,
- IsVirtualItem = false,
- IsFavorite = isFavorite,
- DtoOptions = new DtoOptions(false)
- {
- EnableImages = false
- }
- };
-
- return _libraryManager.GetItemsResult(query).TotalRecordCount;
- }
-
private BaseItem? TranslateParentItem(BaseItem item, User user)
{
return item.GetParent() is AggregateFolder