aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Entities
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-12-06 03:24:29 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-12-06 03:24:29 -0500
commit016d8301f5060d899cccbfad67823fa9e628d260 (patch)
treee2881e5e576102122ac79aced7c4fb6f1bcd28a3 /MediaBrowser.Controller/Entities
parente9a3690079e9676e1d315019d80da09c52d230f0 (diff)
update series queries
Diffstat (limited to 'MediaBrowser.Controller/Entities')
-rw-r--r--MediaBrowser.Controller/Entities/Book.cs6
-rw-r--r--MediaBrowser.Controller/Entities/IHasSeries.cs2
-rw-r--r--MediaBrowser.Controller/Entities/InternalItemsQuery.cs1
-rw-r--r--MediaBrowser.Controller/Entities/TV/Episode.cs13
-rw-r--r--MediaBrowser.Controller/Entities/TV/Season.cs9
-rw-r--r--MediaBrowser.Controller/Entities/TV/Series.cs51
6 files changed, 68 insertions, 14 deletions
diff --git a/MediaBrowser.Controller/Entities/Book.cs b/MediaBrowser.Controller/Entities/Book.cs
index 9ccc7125a..a6da389f0 100644
--- a/MediaBrowser.Controller/Entities/Book.cs
+++ b/MediaBrowser.Controller/Entities/Book.cs
@@ -19,6 +19,8 @@ namespace MediaBrowser.Controller.Entities
}
[IgnoreDataMember]
+ public string SeriesPresentationUniqueKey { get; set; }
+ [IgnoreDataMember]
public string SeriesName { get; set; }
[IgnoreDataMember]
public Guid? SeriesId { get; set; }
@@ -33,6 +35,10 @@ namespace MediaBrowser.Controller.Entities
{
return SeriesName;
}
+ public string FindSeriesPresentationUniqueKey()
+ {
+ return SeriesPresentationUniqueKey;
+ }
[IgnoreDataMember]
public override bool EnableRefreshOnDateModifiedChange
diff --git a/MediaBrowser.Controller/Entities/IHasSeries.cs b/MediaBrowser.Controller/Entities/IHasSeries.cs
index 531f58788..203be93e8 100644
--- a/MediaBrowser.Controller/Entities/IHasSeries.cs
+++ b/MediaBrowser.Controller/Entities/IHasSeries.cs
@@ -15,5 +15,7 @@ namespace MediaBrowser.Controller.Entities
string FindSeriesSortName();
Guid? SeriesId { get; set; }
Guid? FindSeriesId();
+ string SeriesPresentationUniqueKey { get; set; }
+ string FindSeriesPresentationUniqueKey();
}
}
diff --git a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs
index 17ef81db9..a2d278a71 100644
--- a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs
+++ b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs
@@ -147,6 +147,7 @@ namespace MediaBrowser.Controller.Entities
public string[] ArtistNames { get; set; }
public string[] ExcludeArtistIds { get; set; }
public string AncestorWithPresentationUniqueKey { get; set; }
+ public string SeriesPresentationUniqueKey { get; set; }
public bool GroupByPresentationUniqueKey { get; set; }
public bool EnableTotalRecordCount { get; set; }
diff --git a/MediaBrowser.Controller/Entities/TV/Episode.cs b/MediaBrowser.Controller/Entities/TV/Episode.cs
index 29a63f317..2bcccf5e8 100644
--- a/MediaBrowser.Controller/Entities/TV/Episode.cs
+++ b/MediaBrowser.Controller/Entities/TV/Episode.cs
@@ -165,13 +165,22 @@ namespace MediaBrowser.Controller.Entities.TV
{
return FindParent<Season>() != null;
}
- }
+ }
+
+ [IgnoreDataMember]
+ public string SeriesPresentationUniqueKey { get; set; }
[IgnoreDataMember]
public string SeriesName { get; set; }
[IgnoreDataMember]
- public string SeasonName { get; set; }
+ public string SeasonName { get; set; }
+
+ public string FindSeriesPresentationUniqueKey()
+ {
+ var series = Series;
+ return series == null ? null : series.PresentationUniqueKey;
+ }
public string FindSeasonName()
{
diff --git a/MediaBrowser.Controller/Entities/TV/Season.cs b/MediaBrowser.Controller/Entities/TV/Season.cs
index 2663a9dd5..e0cc496a1 100644
--- a/MediaBrowser.Controller/Entities/TV/Season.cs
+++ b/MediaBrowser.Controller/Entities/TV/Season.cs
@@ -208,11 +208,20 @@ namespace MediaBrowser.Controller.Entities.TV
}
[IgnoreDataMember]
+ public string SeriesPresentationUniqueKey { get; set; }
+
+ [IgnoreDataMember]
public string SeriesName { get; set; }
[IgnoreDataMember]
public Guid? SeriesId { get; set; }
+ public string FindSeriesPresentationUniqueKey()
+ {
+ var series = Series;
+ return series == null ? null : series.PresentationUniqueKey;
+ }
+
public string FindSeriesName()
{
var series = Series;
diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs
index ef25faf91..92cd20769 100644
--- a/MediaBrowser.Controller/Entities/TV/Series.cs
+++ b/MediaBrowser.Controller/Entities/TV/Series.cs
@@ -95,12 +95,16 @@ namespace MediaBrowser.Controller.Entities.TV
public override string CreatePresentationUniqueKey()
{
- var userdatakeys = GetUserDataKeys();
-
- if (userdatakeys.Count > 1)
+ if (LibraryManager.GetLibraryOptions(this).EnableAutomaticSeriesGrouping)
{
- return AddLibrariesToPresentationUniqueKey(userdatakeys[0]);
+ var userdatakeys = GetUserDataKeys();
+
+ if (userdatakeys.Count > 1)
+ {
+ return AddLibrariesToPresentationUniqueKey(userdatakeys[0]);
+ }
}
+
return base.CreatePresentationUniqueKey();
}
@@ -131,9 +135,13 @@ namespace MediaBrowser.Controller.Entities.TV
public override int GetChildCount(User user)
{
+ var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey;
+ var seriesKey = GetUniqueSeriesKey(this);
+
var result = LibraryManager.GetItemsResult(new InternalItemsQuery(user)
{
- AncestorWithPresentationUniqueKey = GetUniqueSeriesKey(this),
+ AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey,
+ SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null,
IncludeItemTypes = new[] { typeof(Season).Name },
IsVirtualItem = false,
Limit = 0
@@ -144,9 +152,15 @@ namespace MediaBrowser.Controller.Entities.TV
public override int GetRecursiveChildCount(User user)
{
- var query = new InternalItemsQuery(user);
+ var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey;
+ var seriesKey = GetUniqueSeriesKey(this);
+
+ var query = new InternalItemsQuery(user)
+ {
+ AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey,
+ SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null,
+ };
- query.AncestorWithPresentationUniqueKey = GetUniqueSeriesKey(this);
if (query.SortBy.Length == 0)
{
query.SortBy = new[] { ItemSortBy.SortName };
@@ -223,11 +237,13 @@ namespace MediaBrowser.Controller.Entities.TV
{
var config = user.Configuration;
+ var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey;
var seriesKey = GetUniqueSeriesKey(this);
var query = new InternalItemsQuery(user)
{
- AncestorWithPresentationUniqueKey = seriesKey,
+ AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey,
+ SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null,
IncludeItemTypes = new[] { typeof(Season).Name },
SortBy = new[] { ItemSortBy.SortName }
};
@@ -259,7 +275,11 @@ namespace MediaBrowser.Controller.Entities.TV
if (query.Recursive)
{
- query.AncestorWithPresentationUniqueKey = GetUniqueSeriesKey(this);
+ var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey;
+ var seriesKey = GetUniqueSeriesKey(this);
+
+ query.AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey;
+ query.SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null;
if (query.SortBy.Length == 0)
{
query.SortBy = new[] { ItemSortBy.SortName };
@@ -281,11 +301,13 @@ namespace MediaBrowser.Controller.Entities.TV
public IEnumerable<Episode> GetEpisodes(User user)
{
+ var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey;
var seriesKey = GetUniqueSeriesKey(this);
var query = new InternalItemsQuery(user)
{
- AncestorWithPresentationUniqueKey = seriesKey,
+ AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey,
+ SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null,
IncludeItemTypes = new[] { typeof(Episode).Name, typeof(Season).Name },
SortBy = new[] { ItemSortBy.SortName }
};
@@ -387,14 +409,19 @@ namespace MediaBrowser.Controller.Entities.TV
public IEnumerable<Episode> GetSeasonEpisodes(Season parentSeason, User user)
{
+ var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey;
+
+ var queryFromSeries = ConfigurationManager.Configuration.DisplaySpecialsWithinSeasons;
+
// add optimization when this setting is not enabled
- var seriesKey = ConfigurationManager.Configuration.DisplaySpecialsWithinSeasons ?
+ var seriesKey = queryFromSeries ?
GetUniqueSeriesKey(this) :
GetUniqueSeriesKey(parentSeason);
var query = new InternalItemsQuery(user)
{
- AncestorWithPresentationUniqueKey = seriesKey,
+ AncestorWithPresentationUniqueKey = queryFromSeries && enableSeriesPresentationKey ? null : seriesKey,
+ SeriesPresentationUniqueKey = queryFromSeries && enableSeriesPresentationKey ? seriesKey : null,
IncludeItemTypes = new[] { typeof(Episode).Name },
SortBy = new[] { ItemSortBy.SortName }
};