using System.Collections.Immutable;
namespace StellaOps.Scanner.Surface.Validation;
///
/// Aggregate outcome emitted after running all registered validators.
///
public sealed record SurfaceValidationResult
{
private SurfaceValidationResult(bool isSuccess, ImmutableArray issues)
{
IsSuccess = isSuccess;
Issues = issues;
}
public bool IsSuccess { get; }
public ImmutableArray Issues { get; }
public static SurfaceValidationResult Success()
=> new(true, ImmutableArray.Empty);
public static SurfaceValidationResult FromIssues(IEnumerable issues)
{
var immutable = issues.ToImmutableArray();
var success = immutable.All(issue => issue.Severity != SurfaceValidationSeverity.Error);
return new SurfaceValidationResult(success, immutable);
}
}