Browse Source

MultiQuery tweaks

Kenric Nugteren 1 month ago
parent
commit
7f004b2b3d

+ 4 - 0
InABox.Core/Query/Filter.cs

@@ -565,6 +565,10 @@ namespace InABox.Core
 
         public Filter<T> TextSearch(string terms, params Expression<Func<T, string>>[] expressions)
         {
+            if(string.IsNullOrEmpty(terms))
+            {
+                return this;
+            }
             //String[] comps = terms.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
             //foreach (var comp in comps)
             //{

+ 9 - 3
InABox.Core/Query/MultiQuery/MultiQuery.cs

@@ -53,7 +53,7 @@ namespace InABox.Core
                 tasks[query.Key] = Task.Run(() =>
                 {
                     return Client.Create(query.Query.Type)
-                        .Query(query.Query.Filter, query.Query.Columns, query.Query.SortOrder);
+                        .Query(query.Query.Filter, query.Query.Columns, query.Query.SortOrder, query.Query.Range);
                 });
             }
 
@@ -123,10 +123,16 @@ namespace InABox.Core
 
         #region Simplified Generic Helpers
 
-        public void Add<T>(Filter<T>? filter = null, Columns<T>? columns = null, SortOrder<T>? sort = null)
+        public void Add<T>(QueryDef<T> query)
             where T : Entity, IRemotable, IPersistent, new()
         {
-            Add(new QueryDef<T>(filter, columns, sort), typeof(T));
+            Add(query, typeof(T));
+        }
+
+        public void Add<T>(Filter<T>? filter = null, Columns<T>? columns = null, SortOrder<T>? sort = null, CoreRange? range = null)
+            where T : Entity, IRemotable, IPersistent, new()
+        {
+            Add(new QueryDef<T>(filter, columns, sort, range), typeof(T));
         }
 
         public CoreTable Get<T>()

+ 10 - 6
InABox.Core/Query/MultiQuery/QueryDef.cs

@@ -32,23 +32,27 @@ namespace InABox.Clients
     {
         public QueryDef(Filter<T>? filter = null, Columns<T>? columns = null, SortOrder<T>? sortorder = null, CoreRange? range = null)
         {
-            Type = typeof(T);
             Filter = filter;
             Columns = columns;
             SortOrder = sortorder;
             Range = range;
         }
 
-        public Type Type { get; }
+        public Type Type => typeof(T);
 
-        public IFilter? Filter { get; }
+        public Filter<T>? Filter { get; }
 
-        public IColumns? Columns { get; }
+        public Columns<T>? Columns { get; }
 
-        public ISortOrder? SortOrder { get; }
+        public SortOrder<T>? SortOrder { get; }
         
         public CoreRange? Range { get; set; }
-        
+
+        IFilter? IQueryDef.Filter => Filter;
+
+        IColumns? IQueryDef.Columns => Columns;
+
+        ISortOrder? IQueryDef.SortOrder => SortOrder;
     }
 
     public class KeyedQueryDef : QueryDef, IKeyedQueryDef