|
@@ -78,7 +78,8 @@ namespace InABox.Core
|
|
NotInList,
|
|
NotInList,
|
|
InQuery,
|
|
InQuery,
|
|
All,
|
|
All,
|
|
- None
|
|
|
|
|
|
+ None,
|
|
|
|
+ NotInQuery
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -311,6 +312,9 @@ namespace InABox.Core
|
|
IFilter InQuery<U>(SubQuery<U> value);
|
|
IFilter InQuery<U>(SubQuery<U> value);
|
|
IFilter InQuery<U>(Filter<U>? filter, Expression<Func<U, object?>> column);
|
|
IFilter InQuery<U>(Filter<U>? filter, Expression<Func<U, object?>> column);
|
|
|
|
|
|
|
|
+ IFilter NotInQuery<U>(SubQuery<U> value);
|
|
|
|
+ IFilter NotInQuery<U>(Filter<U>? filter, Expression<Func<U, object?>> column);
|
|
|
|
+
|
|
IFilter All();
|
|
IFilter All();
|
|
IFilter None();
|
|
IFilter None();
|
|
|
|
|
|
@@ -926,6 +930,17 @@ namespace InABox.Core
|
|
|
|
|
|
#endregion
|
|
#endregion
|
|
|
|
|
|
|
|
+ #region NotInQuery
|
|
|
|
+
|
|
|
|
+ public Filter<T> NotInQuery<U>(SubQuery<U> value) => ApplyObjectOperator(Operator.NotInQuery, value);
|
|
|
|
+ IFilter IFilter.NotInQuery<U>(SubQuery<U> value) => NotInQuery(value);
|
|
|
|
+
|
|
|
|
+ public Filter<T> NotInQuery<U>(Filter<U>? filter, Expression<Func<U, object?>> column) => NotInQuery(new SubQuery<U>(filter, new Column<U>(column)));
|
|
|
|
+ IFilter IFilter.NotInQuery<U>(Filter<U>? filter, Expression<Func<U, object?>> column) => NotInQuery(filter, column);
|
|
|
|
+
|
|
|
|
+ #endregion
|
|
|
|
+
|
|
|
|
+
|
|
#region All/None
|
|
#region All/None
|
|
|
|
|
|
IFilter IFilter.All() => All();
|
|
IFilter IFilter.All() => All();
|
|
@@ -1605,7 +1620,8 @@ namespace InABox.Core
|
|
{ Operator.Contains, "substringof({1} {0}) eq true" },
|
|
{ Operator.Contains, "substringof({1} {0}) eq true" },
|
|
{ Operator.InList, "{0} in ({1})" },
|
|
{ Operator.InList, "{0} in ({1})" },
|
|
{ Operator.NotInList, "{0} not in ({1})" },
|
|
{ Operator.NotInList, "{0} not in ({1})" },
|
|
- { Operator.InQuery, "{0} in ({1})" }
|
|
|
|
|
|
+ { Operator.InQuery, "{0} in ({1})" },
|
|
|
|
+ { Operator.NotInQuery, "{0} not in ({1})" }
|
|
};
|
|
};
|
|
|
|
|
|
var result = "";
|
|
var result = "";
|
|
@@ -2014,7 +2030,7 @@ namespace InABox.Core
|
|
result.Operator = op;
|
|
result.Operator = op;
|
|
if(data.TryGetValue("Value", out var val))
|
|
if(data.TryGetValue("Value", out var val))
|
|
{
|
|
{
|
|
- if (op == Operator.InQuery)
|
|
|
|
|
|
+ if (op == Operator.InQuery || op == Operator.NotInQuery)
|
|
{
|
|
{
|
|
var wrapper = Serialization.Deserialize<SubQuerySerializationWrapper>((string)val);
|
|
var wrapper = Serialization.Deserialize<SubQuerySerializationWrapper>((string)val);
|
|
val = Activator.CreateInstance(typeof(SubQuery<>).MakeGenericType(CoreUtils.GetEntity(wrapper.Type)), null, null);
|
|
val = Activator.CreateInstance(typeof(SubQuery<>).MakeGenericType(CoreUtils.GetEntity(wrapper.Type)), null, null);
|