using System.Text.Json.Serialization; namespace Strata.SqlTools.Query; public class CalculationFilterGroup { [JsonConstructor] public CalculationFilterGroup(IEnumerable filters, LogicalOperator logicalOperator) { Filters = filters; LogicalOperator = logicalOperator; } public CalculationFilterGroup() : this([], LogicalOperator.And) { } // Hereditary logical operation applied to all Filters public LogicalOperator LogicalOperator { get; set; } public IEnumerable Filters { get; set; } public IEnumerable GetValidFilters() { return Filters?.Where(x => x.IsValid()).ToList() ?? []; } public bool IsValid() { return Filters.All(x => x.IsValid()); } }