mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-03-16 07:06:18 +00:00
reduce library queries
This commit is contained in:
@@ -61,6 +61,12 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||
get { return true; }
|
||||
}
|
||||
|
||||
[IgnoreDataMember]
|
||||
public override bool SupportsInheritedParentImages
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
|
||||
[IgnoreDataMember]
|
||||
protected override bool SupportsOwnedItems
|
||||
{
|
||||
|
||||
@@ -1569,6 +1569,12 @@ namespace MediaBrowser.Controller.Entities
|
||||
return IsVisibleStandaloneInternal(user, true);
|
||||
}
|
||||
|
||||
[IgnoreDataMember]
|
||||
public virtual bool SupportsInheritedParentImages
|
||||
{
|
||||
get { return false; }
|
||||
}
|
||||
|
||||
protected bool IsVisibleStandaloneInternal(User user, bool checkFolders)
|
||||
{
|
||||
if (!IsVisible(user))
|
||||
@@ -2329,17 +2335,25 @@ namespace MediaBrowser.Controller.Entities
|
||||
{
|
||||
get
|
||||
{
|
||||
if (GetParent() is AggregateFolder || this is BasePluginFolder || this is Channel)
|
||||
if (this is BasePluginFolder || this is Channel)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
var view = this as UserView;
|
||||
if (view != null && string.Equals(view.ViewType, CollectionType.LiveTv, StringComparison.OrdinalIgnoreCase))
|
||||
if (view != null)
|
||||
{
|
||||
return true;
|
||||
if (string.Equals(view.ViewType, CollectionType.LiveTv, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (string.Equals(view.ViewType, CollectionType.Channels, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (view != null && string.Equals(view.ViewType, CollectionType.Channels, StringComparison.OrdinalIgnoreCase))
|
||||
|
||||
if (GetParent() is AggregateFolder)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1383,6 +1383,15 @@ namespace MediaBrowser.Controller.Entities
|
||||
{
|
||||
return false;
|
||||
}
|
||||
var iItemByName = this as IItemByName;
|
||||
if (iItemByName != null)
|
||||
{
|
||||
var hasDualAccess = this as IHasDualAccess;
|
||||
if (hasDualAccess == null || hasDualAccess.IsAccessedByName)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1395,17 +1404,6 @@ namespace MediaBrowser.Controller.Entities
|
||||
return;
|
||||
}
|
||||
|
||||
var unplayedQueryResult = await GetItems(new InternalItemsQuery(user)
|
||||
{
|
||||
Recursive = true,
|
||||
IsFolder = false,
|
||||
IsVirtualItem = false,
|
||||
EnableTotalRecordCount = true,
|
||||
Limit = 0,
|
||||
IsPlayed = false
|
||||
|
||||
}).ConfigureAwait(false);
|
||||
|
||||
var allItemsQueryResult = await GetItems(new InternalItemsQuery(user)
|
||||
{
|
||||
Recursive = true,
|
||||
@@ -1415,17 +1413,28 @@ namespace MediaBrowser.Controller.Entities
|
||||
Limit = 0
|
||||
|
||||
}).ConfigureAwait(false);
|
||||
var recursiveItemCount = allItemsQueryResult.TotalRecordCount;
|
||||
|
||||
if (itemDto != null)
|
||||
{
|
||||
itemDto.RecursiveItemCount = allItemsQueryResult.TotalRecordCount;
|
||||
}
|
||||
|
||||
var recursiveItemCount = allItemsQueryResult.TotalRecordCount;
|
||||
double unplayedCount = unplayedQueryResult.TotalRecordCount;
|
||||
|
||||
if (recursiveItemCount > 0)
|
||||
if (recursiveItemCount > 0 && SupportsPlayedStatus)
|
||||
{
|
||||
var unplayedQueryResult = recursiveItemCount > 0 ? await GetItems(new InternalItemsQuery(user)
|
||||
{
|
||||
Recursive = true,
|
||||
IsFolder = false,
|
||||
IsVirtualItem = false,
|
||||
EnableTotalRecordCount = true,
|
||||
Limit = 0,
|
||||
IsPlayed = false
|
||||
|
||||
}).ConfigureAwait(false) : new QueryResult<BaseItem>();
|
||||
|
||||
double unplayedCount = unplayedQueryResult.TotalRecordCount;
|
||||
|
||||
var unplayedPercentage = (unplayedCount / recursiveItemCount) * 100;
|
||||
dto.PlayedPercentage = 100 - unplayedPercentage;
|
||||
dto.Played = dto.PlayedPercentage.Value >= 100;
|
||||
|
||||
@@ -124,7 +124,6 @@ namespace MediaBrowser.Controller.Entities
|
||||
public int? MaxParentalRating { get; set; }
|
||||
|
||||
public bool? HasDeadParentId { get; set; }
|
||||
public bool? IsOffline { get; set; }
|
||||
public bool? IsVirtualItem { get; set; }
|
||||
|
||||
public Guid? ParentId { get; set; }
|
||||
|
||||
@@ -71,6 +71,12 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||
{
|
||||
return IsStacked || MediaSourceCount > 1;
|
||||
}
|
||||
}
|
||||
|
||||
[IgnoreDataMember]
|
||||
public override bool SupportsInheritedParentImages
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
|
||||
[IgnoreDataMember]
|
||||
|
||||
@@ -39,6 +39,12 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||
}
|
||||
}
|
||||
|
||||
[IgnoreDataMember]
|
||||
public override bool SupportsInheritedParentImages
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
|
||||
[IgnoreDataMember]
|
||||
public override Guid? DisplayParentId
|
||||
{
|
||||
|
||||
@@ -135,7 +135,6 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||
{
|
||||
AncestorWithPresentationUniqueKey = GetUniqueSeriesKey(this),
|
||||
IncludeItemTypes = new[] { typeof(Season).Name },
|
||||
SortBy = new[] { ItemSortBy.SortName },
|
||||
IsVirtualItem = false,
|
||||
Limit = 0
|
||||
});
|
||||
|
||||
@@ -1812,7 +1812,7 @@ namespace MediaBrowser.Controller.Entities
|
||||
.Where(i => user.IsFolderGrouped(i.Id) && UserView.IsEligibleForGrouping(i));
|
||||
}
|
||||
|
||||
private IEnumerable<Folder> GetMediaFolders(User user, IEnumerable<string> viewTypes)
|
||||
private List<Folder> GetMediaFolders(User user, IEnumerable<string> viewTypes)
|
||||
{
|
||||
if (user == null)
|
||||
{
|
||||
@@ -1822,7 +1822,7 @@ namespace MediaBrowser.Controller.Entities
|
||||
var folder = i as ICollectionFolder;
|
||||
|
||||
return folder != null && viewTypes.Contains(folder.CollectionType ?? string.Empty, StringComparer.OrdinalIgnoreCase);
|
||||
});
|
||||
}).ToList();
|
||||
}
|
||||
return GetMediaFolders(user)
|
||||
.Where(i =>
|
||||
@@ -1830,17 +1830,17 @@ namespace MediaBrowser.Controller.Entities
|
||||
var folder = i as ICollectionFolder;
|
||||
|
||||
return folder != null && viewTypes.Contains(folder.CollectionType ?? string.Empty, StringComparer.OrdinalIgnoreCase);
|
||||
});
|
||||
}).ToList();
|
||||
}
|
||||
|
||||
private IEnumerable<Folder> GetMediaFolders(Folder parent, User user, IEnumerable<string> viewTypes)
|
||||
private List<Folder> GetMediaFolders(Folder parent, User user, IEnumerable<string> viewTypes)
|
||||
{
|
||||
if (parent == null || parent is UserView)
|
||||
{
|
||||
return GetMediaFolders(user, viewTypes);
|
||||
}
|
||||
|
||||
return new[] { parent };
|
||||
return new List<Folder> { parent };
|
||||
}
|
||||
|
||||
private IEnumerable<BaseItem> GetRecursiveChildren(Folder parent, User user, IEnumerable<string> viewTypes)
|
||||
|
||||
@@ -538,10 +538,7 @@ namespace MediaBrowser.Controller.Library
|
||||
/// <summary>
|
||||
/// Gets the items.
|
||||
/// </summary>
|
||||
/// <param name="query">The query.</param>
|
||||
/// <param name="parentIds">The parent ids.</param>
|
||||
/// <returns>List<BaseItem>.</returns>
|
||||
IEnumerable<BaseItem> GetItemList(InternalItemsQuery query, IEnumerable<string> parentIds);
|
||||
IEnumerable<BaseItem> GetItemList(InternalItemsQuery query, List<BaseItem> parents);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the items result.
|
||||
|
||||
@@ -19,6 +19,6 @@ namespace MediaBrowser.Controller.TV
|
||||
/// <param name="request">The request.</param>
|
||||
/// <param name="parentsFolders">The parents folders.</param>
|
||||
/// <returns>QueryResult<BaseItem>.</returns>
|
||||
QueryResult<BaseItem> GetNextUp(NextUpQuery request, IEnumerable<Folder> parentsFolders);
|
||||
QueryResult<BaseItem> GetNextUp(NextUpQuery request, List<Folder> parentsFolders);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user