Skip to content

Commit 7396735

Browse files
Enhance FilterExpressionVisitor
1 parent 8c438b6 commit 7396735

File tree

1 file changed

+29
-9
lines changed

1 file changed

+29
-9
lines changed

src/JsonApiDotNetCore/Queries/NoSqlQueryLayerComposer.cs

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ public QueryLayer ComposeForGetByIdForNoSql<TId>(TId id, ResourceType primaryRes
176176
};
177177
}
178178

179+
/// <inheritdoc />
179180
public (QueryLayer QueryLayer, IncludeExpression Include) ComposeForUpdateForNoSql<TId>(TId id, ResourceType primaryResourceType)
180181
where TId : notnull
181182
{
@@ -250,7 +251,9 @@ public override bool DefaultVisit(QueryExpression expression, object? argument)
250251
/// <inheritdoc />
251252
public override bool VisitComparison(ComparisonExpression expression, object? argument)
252253
{
253-
return expression.Left.Accept(this, argument) && expression.Right.Accept(this, argument);
254+
_isSimpleFilterExpression &= expression.Left.Accept(this, argument) && expression.Right.Accept(this, argument);
255+
256+
return _isSimpleFilterExpression;
254257
}
255258

256259
/// <inheritdoc />
@@ -279,49 +282,66 @@ private static bool HasOwnsManyAttribute(ResourceFieldAttribute field)
279282
/// <inheritdoc />
280283
public override bool VisitLogical(LogicalExpression expression, object? argument)
281284
{
282-
return expression.Terms.All(term => term.Accept(this, argument));
285+
_isSimpleFilterExpression &= expression.Terms.All(term => term.Accept(this, argument));
286+
287+
return _isSimpleFilterExpression;
283288
}
284289

285290
/// <inheritdoc />
286291
public override bool VisitNot(NotExpression expression, object? argument)
287292
{
288-
return expression.Child.Accept(this, argument);
293+
_isSimpleFilterExpression &= expression.Child.Accept(this, argument);
294+
295+
return _isSimpleFilterExpression;
289296
}
290297

291298
/// <inheritdoc />
292299
public override bool VisitHas(HasExpression expression, object? argument)
293300
{
294-
return expression.TargetCollection.Accept(this, argument) && (expression.Filter is null || expression.Filter.Accept(this, argument));
301+
_isSimpleFilterExpression &= expression.TargetCollection.Accept(this, argument) &&
302+
(expression.Filter is null || expression.Filter.Accept(this, argument));
303+
304+
return _isSimpleFilterExpression;
295305
}
296306

297307
/// <inheritdoc />
298308
public override bool VisitSortElement(SortElementExpression expression, object? argument)
299309
{
300-
return expression.TargetAttribute is null || expression.TargetAttribute.Accept(this, argument);
310+
_isSimpleFilterExpression &= expression.TargetAttribute is null || expression.TargetAttribute.Accept(this, argument);
311+
312+
return _isSimpleFilterExpression;
301313
}
302314

303315
/// <inheritdoc />
304316
public override bool VisitSort(SortExpression expression, object? argument)
305317
{
306-
return expression.Elements.All(element => element.Accept(this, argument));
318+
_isSimpleFilterExpression &= expression.Elements.All(element => element.Accept(this, argument));
319+
320+
return _isSimpleFilterExpression;
307321
}
308322

309323
/// <inheritdoc />
310324
public override bool VisitCount(CountExpression expression, object? argument)
311325
{
312-
return expression.TargetCollection.Accept(this, argument);
326+
_isSimpleFilterExpression &= expression.TargetCollection.Accept(this, argument);
327+
328+
return _isSimpleFilterExpression;
313329
}
314330

315331
/// <inheritdoc />
316332
public override bool VisitMatchText(MatchTextExpression expression, object? argument)
317333
{
318-
return expression.TargetAttribute.Accept(this, argument);
334+
_isSimpleFilterExpression &= expression.TargetAttribute.Accept(this, argument);
335+
336+
return _isSimpleFilterExpression;
319337
}
320338

321339
/// <inheritdoc />
322340
public override bool VisitAny(AnyExpression expression, object? argument)
323341
{
324-
return expression.TargetAttribute.Accept(this, argument);
342+
_isSimpleFilterExpression &= expression.TargetAttribute.Accept(this, argument);
343+
344+
return _isSimpleFilterExpression;
325345
}
326346
}
327347
}

0 commit comments

Comments
 (0)