2
0
Luke Pulverenti 9 жил өмнө
parent
commit
1d6f82e2ef

+ 1 - 0
MediaBrowser.Controller/Entities/InternalItemsQuery.cs

@@ -27,6 +27,7 @@ namespace MediaBrowser.Controller.Entities
         public bool? IsLiked { get; set; }
         public bool? IsPlayed { get; set; }
         public bool? IsResumable { get; set; }
+        public bool? IncludeItemsByName { get; set; }
 
         public string[] MediaTypes { get; set; }
         public string[] IncludeItemTypes { get; set; }

+ 1 - 1
MediaBrowser.Server.Implementations/Library/LibraryManager.cs

@@ -1324,7 +1324,7 @@ namespace MediaBrowser.Server.Implementations.Library
 
             SetTopParentIdsOrAncestors(query, parents);
 
-            return GetItemIds(query).Select(GetItemById);
+            return GetItemIds(query).Select(GetItemById).Where(i => i != null);
         }
 
         public QueryResult<BaseItem> GetItemsResult(InternalItemsQuery query, IEnumerable<string> parentIds)

+ 1 - 0
MediaBrowser.Server.Implementations/Library/SearchEngine.cs

@@ -163,6 +163,7 @@ namespace MediaBrowser.Server.Implementations.Library
                 ExcludeItemTypes = excludeItemTypes.ToArray(),
                 IncludeItemTypes = includeItemTypes.ToArray(),
                 Limit = query.Limit,
+                IncludeItemsByName = true
 
             }, new string[] { });
 

+ 7 - 2
MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs

@@ -300,6 +300,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv
 
         public async Task<ILiveTvRecording> GetInternalRecording(string id, CancellationToken cancellationToken)
         {
+            if (string.IsNullOrWhiteSpace(id))
+            {
+                throw new ArgumentNullException("id");
+            }
+
             var result = await GetInternalRecordings(new RecordingQuery
             {
                 Id = id
@@ -1410,7 +1415,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
             var queryResult = _libraryManager.GetItems(internalQuery, new string[] { });
             IEnumerable<ILiveTvRecording> recordings = queryResult.Cast<ILiveTvRecording>();
 
-            if (!string.IsNullOrEmpty(query.Id))
+            if (!string.IsNullOrWhiteSpace(query.Id))
             {
                 var guid = new Guid(query.Id);
 
@@ -1418,7 +1423,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
                     .Where(i => i.Id == guid);
             }
 
-            if (!string.IsNullOrEmpty(query.GroupId))
+            if (!string.IsNullOrWhiteSpace(query.GroupId))
             {
                 var guid = new Guid(query.GroupId);
 

+ 21 - 5
MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs

@@ -1914,18 +1914,34 @@ namespace MediaBrowser.Server.Implementations.Persistence
                 whereClauses.Add("LocationType not in (" + val + ")");
             }
 
+            var enableItemsByName = query.IncludeItemsByName ?? query.IncludeItemTypes.Length > 0;
+
             if (query.TopParentIds.Length == 1)
             {
-                whereClauses.Add("(TopParentId=@TopParentId or IsItemByName=@IsItemByName)");
+                if (enableItemsByName)
+                {
+                    whereClauses.Add("(TopParentId=@TopParentId or IsItemByName=@IsItemByName)");
+                    cmd.Parameters.Add(cmd, "@IsItemByName", DbType.Boolean).Value = true;
+                }
+                else
+                {
+                    whereClauses.Add("(TopParentId=@TopParentId)");
+                }
                 cmd.Parameters.Add(cmd, "@TopParentId", DbType.String).Value = query.TopParentIds[0];
-                cmd.Parameters.Add(cmd, "@IsItemByName", DbType.Boolean).Value = true;
             }
             if (query.TopParentIds.Length > 1)
             {
                 var val = string.Join(",", query.TopParentIds.Select(i => "'" + i + "'").ToArray());
-
-                whereClauses.Add("(IsItemByName=@IsItemByName or TopParentId in (" + val + "))");
-                cmd.Parameters.Add(cmd, "@IsItemByName", DbType.Boolean).Value = true;
+                
+                if (enableItemsByName)
+                {
+                    whereClauses.Add("(IsItemByName=@IsItemByName or TopParentId in (" + val + "))");
+                    cmd.Parameters.Add(cmd, "@IsItemByName", DbType.Boolean).Value = true;
+                }
+                else
+                {
+                    whereClauses.Add("(TopParentId in (" + val + "))");
+                }
             }
 
             if (query.AncestorIds.Length == 1)