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