diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-03-20 15:53:22 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-03-20 15:53:22 -0400 |
| commit | b4ea519395031f87a4c5154c34bccc621fc2dd95 (patch) | |
| tree | a50eced5d0fc610870747d5a39982c5144103ced /MediaBrowser.Controller | |
| parent | 6807b2dd71d8a7ece0c1809449fffa78d4d62d3a (diff) | |
update db querying
Diffstat (limited to 'MediaBrowser.Controller')
| -rw-r--r-- | MediaBrowser.Controller/Entities/Folder.cs | 25 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/InternalItemsQuery.cs | 9 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/UserViewBuilder.cs | 28 |
3 files changed, 48 insertions, 14 deletions
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index efb784153a..5a5fe2a9f1 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -1094,13 +1094,6 @@ namespace MediaBrowser.Controller.Entities return true; } - // Apply year filter - if (query.Years.Length > 0) - { - Logger.Debug("Query requires post-filtering due to Years"); - return true; - } - // Apply official rating filter if (query.OfficialRatings.Length > 0) { @@ -1139,12 +1132,6 @@ namespace MediaBrowser.Controller.Entities return true; } - if (query.Years.Length > 0) - { - Logger.Debug("Query requires post-filtering due to Years"); - return true; - } - if (query.OfficialRatings.Length > 0) { Logger.Debug("Query requires post-filtering due to OfficialRatings"); @@ -1205,6 +1192,18 @@ namespace MediaBrowser.Controller.Entities return true; } + if (query.AirDays.Length > 0) + { + Logger.Debug("Query requires post-filtering due to AirDays"); + return true; + } + + if (query.SeriesStatuses.Length > 0) + { + Logger.Debug("Query requires post-filtering due to SeriesStatuses"); + return true; + } + return false; } diff --git a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs index 05031691c8..e2b393d4d9 100644 --- a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs +++ b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs @@ -103,17 +103,18 @@ namespace MediaBrowser.Controller.Entities public string[] ChannelIds { get; set; } internal List<Guid> ItemIdsFromPersonFilters { get; set; } + public int? ParentIndexNumber { get; set; } public int? MaxParentalRating { get; set; } public bool? IsCurrentSchema { get; set; } public bool? HasDeadParentId { get; set; } public bool? IsOffline { get; set; } - public LocationType? LocationType { get; set; } public Guid? ParentId { get; set; } public string[] AncestorIds { get; set; } public string[] TopParentIds { get; set; } + public LocationType[] LocationTypes { get; set; } public LocationType[] ExcludeLocationTypes { get; set; } public string[] PresetViews { get; set; } public SourceType[] SourceTypes { get; set; } @@ -121,6 +122,9 @@ namespace MediaBrowser.Controller.Entities public TrailerType[] TrailerTypes { get; set; } public TrailerType[] ExcludeTrailerTypes { get; set; } + public DayOfWeek[] AirDays { get; set; } + public SeriesStatus[] SeriesStatuses { get; set; } + public InternalItemsQuery() { BlockUnratedItems = new UnratedItem[] { }; @@ -144,12 +148,15 @@ namespace MediaBrowser.Controller.Entities AncestorIds = new string[] { }; TopParentIds = new string[] { }; ExcludeTags = new string[] { }; + LocationTypes = new LocationType[] { }; ExcludeLocationTypes = new LocationType[] { }; PresetViews = new string[] { }; SourceTypes = new SourceType[] { }; ExcludeSourceTypes = new SourceType[] { }; TrailerTypes = new TrailerType[] { }; ExcludeTrailerTypes = new TrailerType[] { }; + AirDays = new DayOfWeek[] { }; + SeriesStatuses = new SeriesStatus[] { }; } public InternalItemsQuery(User user) diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index 4439b9c6d1..c33212619b 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -1709,6 +1709,34 @@ namespace MediaBrowser.Controller.Entities } } + if (query.ParentIndexNumber.HasValue) + { + var filterValue = query.ParentIndexNumber.Value; + + if (item.ParentIndexNumber.HasValue && item.ParentIndexNumber.Value != filterValue) + { + return false; + } + } + + if (query.AirDays.Length > 0) + { + var ok = new[] { item }.OfType<Series>().Any(p => p.AirDays != null && query.AirDays.Any(d => p.AirDays.Contains(d))); + if (!ok) + { + return false; + } + } + + if (query.SeriesStatuses.Length > 0) + { + var ok = new[] { item }.OfType<Series>().Any(p => p.Status.HasValue && query.SeriesStatuses.Contains(p.Status.Value)); + if (!ok) + { + return false; + } + } + return true; } |
