mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-10-31 10:37:22 -04:00 
			
		
		
		
	update next up queries
This commit is contained in:
		
							parent
							
								
									c2d0fd9985
								
							
						
					
					
						commit
						d84bb7160f
					
				| @ -2443,6 +2443,66 @@ namespace Emby.Server.Implementations.Data | |||||||
|             return " from TypedBaseItems " + alias; |             return " from TypedBaseItems " + alias; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         public int GetCount(InternalItemsQuery query) | ||||||
|  |         { | ||||||
|  |             if (query == null) | ||||||
|  |             { | ||||||
|  |                 throw new ArgumentNullException("query"); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             CheckDisposed(); | ||||||
|  | 
 | ||||||
|  |             //Logger.Info("GetItemList: " + _environmentInfo.StackTrace); | ||||||
|  | 
 | ||||||
|  |             var now = DateTime.UtcNow; | ||||||
|  | 
 | ||||||
|  |             // Hack for right now since we currently don't support filtering out these duplicates within a query | ||||||
|  |             if (query.Limit.HasValue && query.EnableGroupByMetadataKey) | ||||||
|  |             { | ||||||
|  |                 query.Limit = query.Limit.Value + 4; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             var commandText = "select " + string.Join(",", GetFinalColumnsToSelect(query, new [] { "count(distinct PresentationUniqueKey)" })) + GetFromText(); | ||||||
|  |             commandText += GetJoinUserDataText(query); | ||||||
|  | 
 | ||||||
|  |             var whereClauses = GetWhereClauses(query, null); | ||||||
|  | 
 | ||||||
|  |             var whereText = whereClauses.Count == 0 ? | ||||||
|  |                 string.Empty : | ||||||
|  |                 " where " + string.Join(" AND ", whereClauses.ToArray()); | ||||||
|  | 
 | ||||||
|  |             commandText += whereText; | ||||||
|  | 
 | ||||||
|  |             //commandText += GetGroupBy(query); | ||||||
|  | 
 | ||||||
|  |             int count = 0; | ||||||
|  | 
 | ||||||
|  |             using (WriteLock.Read()) | ||||||
|  |             { | ||||||
|  |                 using (var connection = CreateConnection(true)) | ||||||
|  |                 { | ||||||
|  |                     using (var statement = PrepareStatementSafe(connection, commandText)) | ||||||
|  |                     { | ||||||
|  |                         if (EnableJoinUserData(query)) | ||||||
|  |                         { | ||||||
|  |                             statement.TryBind("@UserId", query.User.Id); | ||||||
|  |                         } | ||||||
|  | 
 | ||||||
|  |                         BindSimilarParams(query, statement); | ||||||
|  | 
 | ||||||
|  |                         // Running this again will bind the params | ||||||
|  |                         GetWhereClauses(query, statement); | ||||||
|  | 
 | ||||||
|  |                         count = statement.ExecuteQuery().SelectScalarInt().First(); | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |                 LogQueryTime("GetCount", commandText, now); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             return count; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         public List<BaseItem> GetItemList(InternalItemsQuery query) |         public List<BaseItem> GetItemList(InternalItemsQuery query) | ||||||
|         { |         { | ||||||
|             if (query == null) |             if (query == null) | ||||||
| @ -2859,7 +2919,7 @@ namespace Emby.Server.Implementations.Data | |||||||
|             } |             } | ||||||
|             if (string.Equals(name, ItemSortBy.SeriesDatePlayed, StringComparison.OrdinalIgnoreCase)) |             if (string.Equals(name, ItemSortBy.SeriesDatePlayed, StringComparison.OrdinalIgnoreCase)) | ||||||
|             { |             { | ||||||
|                 return new Tuple<string, bool>("(Select MAX(LastPlayedDate) from TypedBaseItems B" + GetJoinUserDataText(query) + " where B.SeriesPresentationUniqueKey=A.PresentationUniqueKey)", false); |                 return new Tuple<string, bool>("(Select MAX(LastPlayedDate) from TypedBaseItems B" + GetJoinUserDataText(query) + " where Played=1 and B.SeriesPresentationUniqueKey=A.PresentationUniqueKey)", false); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             return new Tuple<string, bool>(name, false); |             return new Tuple<string, bool>(name, false); | ||||||
|  | |||||||
| @ -1279,6 +1279,26 @@ namespace Emby.Server.Implementations.Library | |||||||
|             return ItemRepository.GetItemList(query); |             return ItemRepository.GetItemList(query); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         public int GetCount(InternalItemsQuery query) | ||||||
|  |         { | ||||||
|  |             if (query.Recursive && query.ParentId.HasValue) | ||||||
|  |             { | ||||||
|  |                 var parent = GetItemById(query.ParentId.Value); | ||||||
|  |                 if (parent != null) | ||||||
|  |                 { | ||||||
|  |                     SetTopParentIdsOrAncestors(query, new List<BaseItem> { parent }); | ||||||
|  |                     query.ParentId = null; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             if (query.User != null) | ||||||
|  |             { | ||||||
|  |                 AddUserToQuery(query, query.User); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             return ItemRepository.GetCount(query); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         public IEnumerable<BaseItem> GetItemList(InternalItemsQuery query, List<BaseItem> parents) |         public IEnumerable<BaseItem> GetItemList(InternalItemsQuery query, List<BaseItem> parents) | ||||||
|         { |         { | ||||||
|             SetTopParentIdsOrAncestors(query, parents); |             SetTopParentIdsOrAncestors(query, parents); | ||||||
|  | |||||||
| @ -138,16 +138,24 @@ namespace MediaBrowser.Controller.Entities.TV | |||||||
|             var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey; |             var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey; | ||||||
|             var seriesKey = GetUniqueSeriesKey(this); |             var seriesKey = GetUniqueSeriesKey(this); | ||||||
| 
 | 
 | ||||||
|             var result = LibraryManager.GetItemsResult(new InternalItemsQuery(user) |             var result = LibraryManager.GetCount(new InternalItemsQuery(user) | ||||||
|             { |             { | ||||||
|                 AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey, |                 AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey, | ||||||
|                 SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null, |                 SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null, | ||||||
|                 IncludeItemTypes = new[] { typeof(Season).Name }, |                 IncludeItemTypes = new[] { typeof(Season).Name }, | ||||||
|                 IsVirtualItem = false, |                 IsVirtualItem = false, | ||||||
|                 Limit = 0 |                 Limit = 0, | ||||||
|  |                 DtoOptions = new Dto.DtoOptions | ||||||
|  |                 { | ||||||
|  |                     Fields = new List<ItemFields> | ||||||
|  |                     { | ||||||
|  | 
 | ||||||
|  |                     }, | ||||||
|  |                     EnableImages = false | ||||||
|  |                 } | ||||||
|             }); |             }); | ||||||
| 
 | 
 | ||||||
|             return result.TotalRecordCount; |             return result; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public override int GetRecursiveChildCount(User user) |         public override int GetRecursiveChildCount(User user) | ||||||
| @ -159,19 +167,23 @@ namespace MediaBrowser.Controller.Entities.TV | |||||||
|             { |             { | ||||||
|                 AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey, |                 AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey, | ||||||
|                 SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null, |                 SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null, | ||||||
|  |                 DtoOptions = new Dto.DtoOptions | ||||||
|  |                 { | ||||||
|  |                     Fields = new List<ItemFields> | ||||||
|  |                     { | ||||||
|  |                          | ||||||
|  |                     }, | ||||||
|  |                     EnableImages = false | ||||||
|  |                 } | ||||||
|             }; |             }; | ||||||
| 
 | 
 | ||||||
|             if (query.SortBy.Length == 0) |  | ||||||
|             { |  | ||||||
|                 query.SortBy = new[] { ItemSortBy.SortName }; |  | ||||||
|             } |  | ||||||
|             if (query.IncludeItemTypes.Length == 0) |             if (query.IncludeItemTypes.Length == 0) | ||||||
|             { |             { | ||||||
|                 query.IncludeItemTypes = new[] { typeof(Episode).Name, typeof(Season).Name }; |                 query.IncludeItemTypes = new[] { typeof(Episode).Name, typeof(Season).Name }; | ||||||
|             } |             } | ||||||
|             query.IsVirtualItem = false; |             query.IsVirtualItem = false; | ||||||
|             query.Limit = 0; |             query.Limit = 0; | ||||||
|             var totalRecordCount = LibraryManager.GetItemsResult(query).TotalRecordCount; |             var totalRecordCount = LibraryManager.GetCount(query); | ||||||
| 
 | 
 | ||||||
|             return totalRecordCount; |             return totalRecordCount; | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -571,5 +571,6 @@ namespace MediaBrowser.Controller.Library | |||||||
| 
 | 
 | ||||||
|         void RegisterIgnoredPath(string path); |         void RegisterIgnoredPath(string path); | ||||||
|         void UnRegisterIgnoredPath(string path); |         void UnRegisterIgnoredPath(string path); | ||||||
|  |         int GetCount(InternalItemsQuery query); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -163,6 +163,8 @@ namespace MediaBrowser.Controller.Persistence | |||||||
|         /// <returns>Task.</returns> |         /// <returns>Task.</returns> | ||||||
|         Task UpdateInheritedValues(CancellationToken cancellationToken); |         Task UpdateInheritedValues(CancellationToken cancellationToken); | ||||||
| 
 | 
 | ||||||
|  |         int GetCount(InternalItemsQuery query); | ||||||
|  | 
 | ||||||
|         QueryResult<Tuple<BaseItem, ItemCounts>> GetGenres(InternalItemsQuery query); |         QueryResult<Tuple<BaseItem, ItemCounts>> GetGenres(InternalItemsQuery query); | ||||||
|         QueryResult<Tuple<BaseItem, ItemCounts>> GetMusicGenres(InternalItemsQuery query); |         QueryResult<Tuple<BaseItem, ItemCounts>> GetMusicGenres(InternalItemsQuery query); | ||||||
|         QueryResult<Tuple<BaseItem, ItemCounts>> GetGameGenres(InternalItemsQuery query); |         QueryResult<Tuple<BaseItem, ItemCounts>> GetGameGenres(InternalItemsQuery query); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user