// ========================================================================== // Squidex Headless CMS // ========================================================================== // Copyright (c) Squidex UG (haftungsbeschraenkt) // All rights reserved. Licensed under the MIT license. // ========================================================================== using System.Collections.Generic; namespace Squidex.Infrastructure.Queries { public abstract class TransformVisitor : FilterNodeVisitor?, TValue, TArgs> { public override FilterNode? Visit(CompareFilter nodeIn, TArgs args) { return nodeIn; } public override FilterNode? Visit(LogicalFilter nodeIn, TArgs args) { var pruned = new List>(nodeIn.Filters.Count); foreach (var inner in nodeIn.Filters) { var transformed = inner.Accept(this, args); if (transformed != null) { pruned.Add(transformed); } } return new LogicalFilter(nodeIn.Type, pruned); } public override FilterNode? Visit(NegateFilter nodeIn, TArgs args) { var inner = nodeIn.Filter.Accept(this, args); if (inner == null) { return inner; } return new NegateFilter(inner); } } }