diff options
| author | Cody Robibero <cody@robibe.ro> | 2025-08-11 21:03:55 -0600 |
|---|---|---|
| committer | Cody Robibero <cody@robibe.ro> | 2025-08-11 21:06:04 -0600 |
| commit | beca405ad4c771f9cfdd5b410b4a4ba9f1c2d6c8 (patch) | |
| tree | bef93d4b121c21877663c8ae7373df601b0cfb9a /MediaBrowser.Controller | |
| parent | 5eef85f027194491796ceb693057239858ac017c (diff) | |
Refactor to pull item counts in a single query
Diffstat (limited to 'MediaBrowser.Controller')
| -rw-r--r-- | MediaBrowser.Controller/Entities/Audio/MusicArtist.cs | 18 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Audio/MusicGenre.cs | 21 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Genre.cs | 31 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/IItemByName.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Person.cs | 38 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Studio.cs | 37 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/TaggedItemCounts.cs | 27 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Year.cs | 42 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Library/ILibraryManager.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Persistence/IItemRepository.cs | 2 |
10 files changed, 4 insertions, 216 deletions
diff --git a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs index cde4cd6b3..58841e5b7 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs @@ -98,24 +98,6 @@ namespace MediaBrowser.Controller.Entities.Audio return LibraryManager.GetItemList(query); } - public TaggedItemCounts GetTaggedItemCounts(InternalItemsQuery query) - { - query.ArtistIds = [Id]; - - var counts = new TaggedItemCounts(); - - query.IncludeItemTypes = [BaseItemKind.MusicAlbum]; - counts.AlbumCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.MusicVideo]; - counts.MusicVideoCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.Audio]; - counts.SongCount = LibraryManager.GetCount(query); - - return counts; - } - public override int GetChildCount(User user) { return IsAccessedByName ? 0 : base.GetChildCount(user); diff --git a/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs b/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs index 9538e0cfa..65669e680 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs @@ -73,27 +73,6 @@ namespace MediaBrowser.Controller.Entities.Audio return LibraryManager.GetItemList(query); } - public TaggedItemCounts GetTaggedItemCounts(InternalItemsQuery query) - { - query.GenreIds = [Id]; - - var counts = new TaggedItemCounts(); - - query.IncludeItemTypes = [BaseItemKind.MusicAlbum]; - counts.AlbumCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.MusicArtist]; - counts.ArtistCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.MusicVideo]; - counts.MusicVideoCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.Audio]; - counts.SongCount = LibraryManager.GetCount(query); - - return counts; - } - public static string GetPath(string name) { return GetPath(name, true); diff --git a/MediaBrowser.Controller/Entities/Genre.cs b/MediaBrowser.Controller/Entities/Genre.cs index 20fab93b2..6ec78a270 100644 --- a/MediaBrowser.Controller/Entities/Genre.cs +++ b/MediaBrowser.Controller/Entities/Genre.cs @@ -76,37 +76,6 @@ namespace MediaBrowser.Controller.Entities return LibraryManager.GetItemList(query); } - public TaggedItemCounts GetTaggedItemCounts(InternalItemsQuery query) - { - query.GenreIds = [Id]; - query.ExcludeItemTypes = - [ - BaseItemKind.MusicVideo, - BaseItemKind.Audio, - BaseItemKind.MusicAlbum, - BaseItemKind.MusicArtist - ]; - - var counts = new TaggedItemCounts(); - - query.IncludeItemTypes = [BaseItemKind.Episode]; - counts.EpisodeCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.Movie]; - counts.MovieCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.LiveTvProgram]; - counts.ProgramCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.Series]; - counts.SeriesCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.Trailer]; - counts.TrailerCount = LibraryManager.GetCount(query); - - return counts; - } - public static string GetPath(string name) { return GetPath(name, true); diff --git a/MediaBrowser.Controller/Entities/IItemByName.cs b/MediaBrowser.Controller/Entities/IItemByName.cs index 0cacadb67..4928bda7a 100644 --- a/MediaBrowser.Controller/Entities/IItemByName.cs +++ b/MediaBrowser.Controller/Entities/IItemByName.cs @@ -10,8 +10,6 @@ namespace MediaBrowser.Controller.Entities public interface IItemByName { IReadOnlyList<BaseItem> GetTaggedItems(InternalItemsQuery query); - - TaggedItemCounts GetTaggedItemCounts(InternalItemsQuery query); } public interface IHasDualAccess : IItemByName diff --git a/MediaBrowser.Controller/Entities/Person.cs b/MediaBrowser.Controller/Entities/Person.cs index d4158655b..5cc4d322f 100644 --- a/MediaBrowser.Controller/Entities/Person.cs +++ b/MediaBrowser.Controller/Entities/Person.cs @@ -5,7 +5,6 @@ using System; using System.Collections.Generic; using System.Text.Json.Serialization; -using Jellyfin.Data.Enums; using Jellyfin.Extensions; using MediaBrowser.Controller.Providers; using Microsoft.Extensions.Logging; @@ -71,43 +70,6 @@ namespace MediaBrowser.Controller.Entities return LibraryManager.GetItemList(query); } - public TaggedItemCounts GetTaggedItemCounts(InternalItemsQuery query) - { - query.PersonIds = [Id]; - - var counts = new TaggedItemCounts(); - - // TODO: Remove MusicAlbum and MusicArtist when the relationship between Persons and Music is removed - query.IncludeItemTypes = [BaseItemKind.MusicAlbum]; - counts.AlbumCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.MusicArtist]; - counts.ArtistCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.Episode]; - counts.EpisodeCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.Movie]; - counts.MovieCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.MusicVideo]; - counts.MusicVideoCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.LiveTvProgram]; - counts.ProgramCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.Series]; - counts.SeriesCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.Audio]; - counts.SongCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.Trailer]; - counts.TrailerCount = LibraryManager.GetCount(query); - - return counts; - } - public override bool CanDelete() { return false; diff --git a/MediaBrowser.Controller/Entities/Studio.cs b/MediaBrowser.Controller/Entities/Studio.cs index a44b32d85..9103b09a9 100644 --- a/MediaBrowser.Controller/Entities/Studio.cs +++ b/MediaBrowser.Controller/Entities/Studio.cs @@ -5,7 +5,6 @@ using System; using System.Collections.Generic; using System.Text.Json.Serialization; -using Jellyfin.Data.Enums; using Jellyfin.Extensions; using Microsoft.Extensions.Logging; @@ -72,42 +71,6 @@ namespace MediaBrowser.Controller.Entities return LibraryManager.GetItemList(query); } - public TaggedItemCounts GetTaggedItemCounts(InternalItemsQuery query) - { - query.StudioIds = [Id]; - - var counts = new TaggedItemCounts(); - - query.IncludeItemTypes = [BaseItemKind.MusicAlbum]; - counts.AlbumCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.MusicArtist]; - counts.ArtistCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.Episode]; - counts.EpisodeCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.Movie]; - counts.MovieCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.MusicVideo]; - counts.MusicVideoCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.LiveTvProgram]; - counts.ProgramCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.Series]; - counts.SeriesCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.Audio]; - counts.SongCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.Trailer]; - counts.TrailerCount = LibraryManager.GetCount(query); - - return counts; - } - public static string GetPath(string name) { return GetPath(name, true); diff --git a/MediaBrowser.Controller/Entities/TaggedItemCounts.cs b/MediaBrowser.Controller/Entities/TaggedItemCounts.cs deleted file mode 100644 index 0e7042988..000000000 --- a/MediaBrowser.Controller/Entities/TaggedItemCounts.cs +++ /dev/null @@ -1,27 +0,0 @@ -#pragma warning disable CS1591 - -namespace MediaBrowser.Controller.Entities -{ - public class TaggedItemCounts - { - public int? AlbumCount { get; set; } - - public int? ArtistCount { get; set; } - - public int? EpisodeCount { get; set; } - - public int? MovieCount { get; set; } - - public int? MusicVideoCount { get; set; } - - public int? ProgramCount { get; set; } - - public int? SeriesCount { get; set; } - - public int? SongCount { get; set; } - - public int? TrailerCount { get; set; } - - public int ChildCount => (AlbumCount ?? 0) + (ArtistCount ?? 0) + (EpisodeCount ?? 0) + (MovieCount ?? 0) + (MusicVideoCount ?? 0) + (ProgramCount ?? 0) + (SeriesCount ?? 0) + (SongCount ?? 0) + (TrailerCount ?? 0); - } -} diff --git a/MediaBrowser.Controller/Entities/Year.cs b/MediaBrowser.Controller/Entities/Year.cs index a1ff9f4d4..37820296c 100644 --- a/MediaBrowser.Controller/Entities/Year.cs +++ b/MediaBrowser.Controller/Entities/Year.cs @@ -6,7 +6,6 @@ using System; using System.Collections.Generic; using System.Globalization; using System.Text.Json.Serialization; -using Jellyfin.Data.Enums; using Microsoft.Extensions.Logging; namespace MediaBrowser.Controller.Entities @@ -69,47 +68,6 @@ namespace MediaBrowser.Controller.Entities return LibraryManager.GetItemList(query); } - public TaggedItemCounts GetTaggedItemCounts(InternalItemsQuery query) - { - if (!int.TryParse(Name, NumberStyles.Integer, CultureInfo.InvariantCulture, out var year)) - { - return new TaggedItemCounts(); - } - - query.Years = [year]; - - var counts = new TaggedItemCounts(); - - query.IncludeItemTypes = [BaseItemKind.MusicAlbum]; - counts.AlbumCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.MusicArtist]; - counts.ArtistCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.Episode]; - counts.EpisodeCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.Movie]; - counts.MovieCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.MusicVideo]; - counts.MusicVideoCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.LiveTvProgram]; - counts.ProgramCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.Series]; - counts.SeriesCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.Audio]; - counts.SongCount = LibraryManager.GetCount(query); - - query.IncludeItemTypes = [BaseItemKind.Trailer]; - counts.TrailerCount = LibraryManager.GetCount(query); - - return counts; - } - public int? GetYearValue() { if (int.TryParse(Name, NumberStyles.Integer, CultureInfo.InvariantCulture, out var year)) diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs index 98ed15eb6..b72d1d0b4 100644 --- a/MediaBrowser.Controller/Library/ILibraryManager.cs +++ b/MediaBrowser.Controller/Library/ILibraryManager.cs @@ -630,6 +630,8 @@ namespace MediaBrowser.Controller.Library int GetCount(InternalItemsQuery query); + ItemCounts GetItemCounts(InternalItemsQuery query); + Task RunMetadataSavers(BaseItem item, ItemUpdateType updateReason); BaseItem GetParentItem(Guid? parentId, Guid? userId); diff --git a/MediaBrowser.Controller/Persistence/IItemRepository.cs b/MediaBrowser.Controller/Persistence/IItemRepository.cs index f4ac0ece4..a0dabbac6 100644 --- a/MediaBrowser.Controller/Persistence/IItemRepository.cs +++ b/MediaBrowser.Controller/Persistence/IItemRepository.cs @@ -84,6 +84,8 @@ public interface IItemRepository int GetCount(InternalItemsQuery filter); + ItemCounts GetItemCounts(InternalItemsQuery filter); + QueryResult<(BaseItem Item, ItemCounts ItemCounts)> GetGenres(InternalItemsQuery filter); QueryResult<(BaseItem Item, ItemCounts ItemCounts)> GetMusicGenres(InternalItemsQuery filter); |
