Ver Fonte

support more filters at db level

Luke Pulverenti há 9 anos atrás
pai
commit
311dd50eb7

+ 0 - 29
MediaBrowser.Controller/Entities/Folder.cs

@@ -839,11 +839,6 @@ namespace MediaBrowser.Controller.Entities
                     Logger.Debug("Query requires post-filtering due to ItemSortBy.SeriesSortName");
                     return true;
                 }
-                if (query.SortBy.Contains(ItemSortBy.StartDate, StringComparer.OrdinalIgnoreCase))
-                {
-                    Logger.Debug("Query requires post-filtering due to ItemSortBy.StartDate");
-                    return true;
-                }
                 if (query.SortBy.Contains(ItemSortBy.Studio, StringComparer.OrdinalIgnoreCase))
                 {
                     Logger.Debug("Query requires post-filtering due to ItemSortBy.Studio");
@@ -1059,30 +1054,6 @@ namespace MediaBrowser.Controller.Entities
                 return true;
             }
 
-            if (!string.IsNullOrWhiteSpace(query.NameContains))
-            {
-                Logger.Debug("Query requires post-filtering due to NameContains");
-                return true;
-            }
-
-            if (!string.IsNullOrWhiteSpace(query.NameLessThan))
-            {
-                Logger.Debug("Query requires post-filtering due to NameLessThan");
-                return true;
-            }
-
-            if (!string.IsNullOrWhiteSpace(query.NameStartsWith))
-            {
-                Logger.Debug("Query requires post-filtering due to NameStartsWith");
-                return true;
-            }
-
-            if (!string.IsNullOrWhiteSpace(query.NameStartsWithOrGreater))
-            {
-                Logger.Debug("Query requires post-filtering due to NameStartsWithOrGreater");
-                return true;
-            }
-
             if (query.AirDays.Length > 0)
             {
                 Logger.Debug("Query requires post-filtering due to AirDays");

+ 24 - 0
MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs

@@ -2071,6 +2071,30 @@ namespace MediaBrowser.Server.Implementations.Persistence
                 }
                 cmd.Parameters.Add(cmd, "@NameContains", DbType.String).Value = "%" + query.NameContains + "%";
             }
+            if (!string.IsNullOrWhiteSpace(query.NameStartsWith))
+            {
+                if (_config.Configuration.SchemaVersion >= 66)
+                {
+                    whereClauses.Add("CleanName like @NameStartsWith");
+                }
+                else
+                {
+                    whereClauses.Add("Name like @NameStartsWith");
+                }
+                cmd.Parameters.Add(cmd, "@NameStartsWith", DbType.String).Value = query.NameStartsWith + "%";
+            }
+            if (!string.IsNullOrWhiteSpace(query.NameStartsWithOrGreater))
+            {
+                whereClauses.Add("SortName >= @NameStartsWithOrGreater");
+                // lowercase this because SortName is stored as lowercase
+                cmd.Parameters.Add(cmd, "@NameStartsWithOrGreater", DbType.String).Value = query.NameStartsWithOrGreater.ToLower();
+            }
+            if (!string.IsNullOrWhiteSpace(query.NameLessThan))
+            {
+                whereClauses.Add("SortName < @NameLessThan");
+                // lowercase this because SortName is stored as lowercase
+                cmd.Parameters.Add(cmd, "@NameLessThan", DbType.String).Value = query.NameLessThan.ToLower();
+            }
 
             if (query.Genres.Length > 0)
             {