diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-12-06 03:24:29 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-12-06 03:24:29 -0500 |
| commit | 016d8301f5060d899cccbfad67823fa9e628d260 (patch) | |
| tree | e2881e5e576102122ac79aced7c4fb6f1bcd28a3 /Emby.Server.Implementations | |
| parent | e9a3690079e9676e1d315019d80da09c52d230f0 (diff) | |
update series queries
Diffstat (limited to 'Emby.Server.Implementations')
| -rw-r--r-- | Emby.Server.Implementations/Data/SqliteItemRepository.cs | 32 | ||||
| -rw-r--r-- | Emby.Server.Implementations/Library/LibraryManager.cs | 11 | ||||
| -rw-r--r-- | Emby.Server.Implementations/TV/TVSeriesManager.cs | 9 |
3 files changed, 46 insertions, 6 deletions
diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs index 9c096916f..14723c0a7 100644 --- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs +++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs @@ -291,6 +291,7 @@ namespace Emby.Server.Implementations.Data AddColumn(db, "TypedBaseItems", "Artists", "Text", existingColumnNames); AddColumn(db, "TypedBaseItems", "AlbumArtists", "Text", existingColumnNames); AddColumn(db, "TypedBaseItems", "ExternalId", "Text", existingColumnNames); + AddColumn(db, "TypedBaseItems", "SeriesPresentationUniqueKey", "Text", existingColumnNames); existingColumnNames = GetColumnNames(db, "ItemValues"); AddColumn(db, "ItemValues", "CleanValue", "Text", existingColumnNames); @@ -341,6 +342,7 @@ namespace Emby.Server.Implementations.Data "drop index if exists Idx_ProviderIds1", "drop table if exists Images", "drop index if exists idx_Images", + "drop index if exists idx_TypeSeriesPresentationUniqueKey", "create index if not exists idx_PathTypedBaseItems on TypedBaseItems(Path)", "create index if not exists idx_ParentIdTypedBaseItems on TypedBaseItems(ParentId)", @@ -353,6 +355,9 @@ namespace Emby.Server.Implementations.Data // covering index "create index if not exists idx_TopParentIdGuid on TypedBaseItems(TopParentId,Guid)", + // series + "create index if not exists idx_TypeSeriesPresentationUniqueKey1 on TypedBaseItems(Type,SeriesPresentationUniqueKey,PresentationUniqueKey,SortName)", + // live tv programs "create index if not exists idx_TypeTopParentIdStartDate on TypedBaseItems(Type,TopParentId,StartDate)", @@ -488,7 +493,8 @@ namespace Emby.Server.Implementations.Data "ExtraType", "Artists", "AlbumArtists", - "ExternalId" + "ExternalId", + "SeriesPresentationUniqueKey" }; private readonly string[] _mediaStreamSaveColumns = @@ -619,7 +625,8 @@ namespace Emby.Server.Implementations.Data "ExtraType", "Artists", "AlbumArtists", - "ExternalId" + "ExternalId", + "SeriesPresentationUniqueKey" }; var saveItemCommandCommandText = "replace into TypedBaseItems (" + string.Join(",", saveColumns.ToArray()) + ") values ("; @@ -1024,11 +1031,13 @@ namespace Emby.Server.Implementations.Data { saveItemStatement.TryBind("@SeriesId", hasSeries.SeriesId); saveItemStatement.TryBind("@SeriesSortName", hasSeries.SeriesSortName); + saveItemStatement.TryBind("@SeriesPresentationUniqueKey", hasSeries.SeriesPresentationUniqueKey); } else { saveItemStatement.TryBindNull("@SeriesId"); saveItemStatement.TryBindNull("@SeriesSortName"); + saveItemStatement.TryBindNull("@SeriesPresentationUniqueKey"); } saveItemStatement.TryBind("@ExternalSeriesId", item.ExternalSeriesId); @@ -1983,6 +1992,15 @@ namespace Emby.Server.Implementations.Data } index++; + if (hasSeries != null) + { + if (!reader.IsDBNull(index)) + { + hasSeries.SeriesPresentationUniqueKey = reader.GetString(index); + } + } + index++; + if (string.IsNullOrWhiteSpace(item.Tagline)) { var movie = item as Movie; @@ -4292,6 +4310,16 @@ namespace Emby.Server.Implementations.Data } } + if (!string.IsNullOrWhiteSpace(query.SeriesPresentationUniqueKey)) + { + whereClauses.Add("SeriesPresentationUniqueKey=@SeriesPresentationUniqueKey"); + + if (statement != null) + { + statement.TryBind("@SeriesPresentationUniqueKey", query.SeriesPresentationUniqueKey); + } + } + if (query.BlockUnratedItems.Length == 1) { whereClauses.Add("(InheritedParentalRatingValue > 0 or UnratedType <> @UnratedType)"); diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs index 8fb28fb59..d96756ce1 100644 --- a/Emby.Server.Implementations/Library/LibraryManager.cs +++ b/Emby.Server.Implementations/Library/LibraryManager.cs @@ -1057,6 +1057,12 @@ namespace Emby.Server.Implementations.Library try { await PerformLibraryValidation(progress, cancellationToken).ConfigureAwait(false); + + if (!ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey) + { + ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey = true; + ConfigurationManager.SaveConfiguration(); + } } finally { @@ -1478,8 +1484,9 @@ namespace Emby.Server.Implementations.Library !query.ParentId.HasValue && query.ChannelIds.Length == 0 && query.TopParentIds.Length == 0 && - string.IsNullOrWhiteSpace(query.AncestorWithPresentationUniqueKey) - && query.ItemIds.Length == 0) + string.IsNullOrWhiteSpace(query.AncestorWithPresentationUniqueKey) && + string.IsNullOrWhiteSpace(query.SeriesPresentationUniqueKey) && + query.ItemIds.Length == 0) { var userViews = _userviewManager().GetUserViews(new UserViewQuery { diff --git a/Emby.Server.Implementations/TV/TVSeriesManager.cs b/Emby.Server.Implementations/TV/TVSeriesManager.cs index 56e729995..4f876f6a3 100644 --- a/Emby.Server.Implementations/TV/TVSeriesManager.cs +++ b/Emby.Server.Implementations/TV/TVSeriesManager.cs @@ -158,9 +158,13 @@ namespace Emby.Server.Implementations.TV /// <returns>Task{Episode}.</returns> private Tuple<DateTime, Func<Episode>> GetNextUp(Series series, User user) { + var enableSeriesPresentationKey = _config.Configuration.EnableSeriesPresentationUniqueKey; + var seriesKey = GetUniqueSeriesKey(series); + var lastWatchedEpisode = _libraryManager.GetItemList(new InternalItemsQuery(user) { - AncestorWithPresentationUniqueKey = GetUniqueSeriesKey(series), + AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey, + SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null, IncludeItemTypes = new[] { typeof(Episode).Name }, SortBy = new[] { ItemSortBy.SortName }, SortOrder = SortOrder.Descending, @@ -174,7 +178,8 @@ namespace Emby.Server.Implementations.TV { return _libraryManager.GetItemList(new InternalItemsQuery(user) { - AncestorWithPresentationUniqueKey = GetUniqueSeriesKey(series), + AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey, + SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null, IncludeItemTypes = new[] { typeof(Episode).Name }, SortBy = new[] { ItemSortBy.SortName }, SortOrder = SortOrder.Ascending, |
