SonarQube Analysis / sonarqube (pull_request) Successful in 3m9s
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.
33 lines
809 B
C#
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());
|
|
}
|
|
}
|