update data queries

This commit is contained in:
Luke Pulverenti
2017-05-21 03:25:49 -04:00
parent ead88d3b65
commit da77b05817
62 changed files with 620 additions and 446 deletions

View File

@@ -5,6 +5,7 @@ using MediaBrowser.Model.Users;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using MediaBrowser.Controller.Dto;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Serialization;
@@ -160,7 +161,7 @@ namespace MediaBrowser.Controller.Entities.TV
Func<BaseItem, bool> filter = i => UserViewBuilder.Filter(i, user, query, UserDataManager, LibraryManager);
var items = GetEpisodes(user).Where(filter);
var items = GetEpisodes(user, query.DtoOptions).Where(filter);
var result = PostFilterAndSort(items, query, false, false);
@@ -170,21 +171,19 @@ namespace MediaBrowser.Controller.Entities.TV
/// <summary>
/// Gets the episodes.
/// </summary>
/// <param name="user">The user.</param>
/// <returns>IEnumerable{Episode}.</returns>
public IEnumerable<Episode> GetEpisodes(User user)
public IEnumerable<Episode> GetEpisodes(User user, DtoOptions options)
{
return GetEpisodes(Series, user);
return GetEpisodes(Series, user, options);
}
public IEnumerable<Episode> GetEpisodes(Series series, User user)
public IEnumerable<Episode> GetEpisodes(Series series, User user, DtoOptions options)
{
return GetEpisodes(series, user, null);
return GetEpisodes(series, user, null, options);
}
public IEnumerable<Episode> GetEpisodes(Series series, User user, IEnumerable<Episode> allSeriesEpisodes)
public IEnumerable<Episode> GetEpisodes(Series series, User user, IEnumerable<Episode> allSeriesEpisodes, DtoOptions options)
{
return series.GetSeasonEpisodes(this, user, allSeriesEpisodes);
return series.GetSeasonEpisodes(this, user, allSeriesEpisodes, options);
}
public IEnumerable<Episode> GetEpisodes()
@@ -194,7 +193,7 @@ namespace MediaBrowser.Controller.Entities.TV
public override IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren)
{
return GetEpisodes(user);
return GetEpisodes(user, new DtoOptions(true));
}
protected override bool GetBlockUnratedValue(UserPolicy config)

View File

@@ -8,6 +8,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller.Dto;
using MediaBrowser.Model.Extensions;
using MediaBrowser.Model.Providers;
using MediaBrowser.Model.Serialization;
@@ -250,12 +251,15 @@ namespace MediaBrowser.Controller.Entities.TV
public override IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren)
{
return GetSeasons(user);
return GetSeasons(user, new DtoOptions(true));
}
public IEnumerable<Season> GetSeasons(User user)
public IEnumerable<Season> GetSeasons(User user, DtoOptions options)
{
var query = new InternalItemsQuery(user);
var query = new InternalItemsQuery(user)
{
DtoOptions = options
};
SetSeasonQueryOptions(query, user);
@@ -321,7 +325,7 @@ namespace MediaBrowser.Controller.Entities.TV
return Task.FromResult(LibraryManager.GetItemsResult(query));
}
public IEnumerable<Episode> GetEpisodes(User user)
public IEnumerable<Episode> GetEpisodes(User user, DtoOptions options)
{
var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey;
var seriesKey = GetUniqueSeriesKey(this);
@@ -331,7 +335,8 @@ namespace MediaBrowser.Controller.Entities.TV
AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey,
SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null,
IncludeItemTypes = new[] { typeof(Episode).Name, typeof(Season).Name },
SortBy = new[] { ItemSortBy.SortName }
SortBy = new[] { ItemSortBy.SortName },
DtoOptions = options
};
var config = user.Configuration;
if (!config.DisplayMissingEpisodes && !config.DisplayUnairedEpisodes)
@@ -352,7 +357,7 @@ namespace MediaBrowser.Controller.Entities.TV
var allSeriesEpisodes = allItems.OfType<Episode>().ToList();
var allEpisodes = allItems.OfType<Season>()
.SelectMany(i => i.GetEpisodes(this, user, allSeriesEpisodes))
.SelectMany(i => i.GetEpisodes(this, user, allSeriesEpisodes, options))
.Reverse()
.ToList();
@@ -429,7 +434,7 @@ namespace MediaBrowser.Controller.Entities.TV
progress.Report(100);
}
public IEnumerable<Episode> GetSeasonEpisodes(Season parentSeason, User user)
public IEnumerable<Episode> GetSeasonEpisodes(Season parentSeason, User user, DtoOptions options)
{
var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey;
@@ -445,7 +450,8 @@ namespace MediaBrowser.Controller.Entities.TV
AncestorWithPresentationUniqueKey = queryFromSeries && enableSeriesPresentationKey ? null : seriesKey,
SeriesPresentationUniqueKey = queryFromSeries && enableSeriesPresentationKey ? seriesKey : null,
IncludeItemTypes = new[] { typeof(Episode).Name },
SortBy = new[] { ItemSortBy.SortName }
SortBy = new[] { ItemSortBy.SortName },
DtoOptions = options
};
if (user != null)
{
@@ -466,14 +472,14 @@ namespace MediaBrowser.Controller.Entities.TV
var allItems = LibraryManager.GetItemList(query).OfType<Episode>();
return GetSeasonEpisodes(parentSeason, user, allItems);
return GetSeasonEpisodes(parentSeason, user, allItems, options);
}
public IEnumerable<Episode> GetSeasonEpisodes(Season parentSeason, User user, IEnumerable<Episode> allSeriesEpisodes)
public IEnumerable<Episode> GetSeasonEpisodes(Season parentSeason, User user, IEnumerable<Episode> allSeriesEpisodes, DtoOptions options)
{
if (allSeriesEpisodes == null)
{
return GetSeasonEpisodes(parentSeason, user);
return GetSeasonEpisodes(parentSeason, user, options);
}
var episodes = FilterEpisodesBySeason(allSeriesEpisodes, parentSeason, ConfigurationManager.Configuration.DisplaySpecialsWithinSeasons);