Files
sql-utilities/src/Strata.SqlTools.Query/CalculationFilterGroup.cs
T
Thom Lamb e3153e58c4
SonarQube Analysis / sonarqube (pull_request) Successful in 3m9s
fix(security): Resolve SonarQube security hotspots
Introduce a default regex match timeout across the library to prevent potential ReDoS attacks (SonarQube rule S6444).
Implement `[OnDeserialized]` methods to re-establish object invariants and validate state after deserialization, addressing SonarQube rule S5766.
2026-05-20 17:19:17 -05:00

33 lines
809 B
C#

using System.Text.Json.Serialization;
namespace Strata.SqlTools.Query;
public class CalculationFilterGroup
{
[JsonConstructor]
public CalculationFilterGroup(IEnumerable<CalculationFilter> 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<CalculationFilter> Filters { get; set; }
public IEnumerable<CalculationFilter> GetValidFilters()
{
return Filters?.Where(x => x.IsValid()).ToList() ?? [];
}
public bool IsValid()
{
return Filters.All(x => x.IsValid());
}
}