using System.Collections.Immutable;

namespace StellaOps.Policy;

public sealed record PolicyFinding(
    string FindingId,
    PolicySeverity Severity,
    string? Environment,
    string? Source,
    string? Vendor,
    string? License,
    string? Image,
    string? Repository,
    string? Package,
    string? Purl,
    string? Cve,
    string? Path,
    string? LayerDigest,
    ImmutableArray<string> Tags)
{
    public static PolicyFinding Create(
        string findingId,
        PolicySeverity severity,
        string? environment = null,
        string? source = null,
        string? vendor = null,
        string? license = null,
        string? image = null,
        string? repository = null,
        string? package = null,
        string? purl = null,
        string? cve = null,
        string? path = null,
        string? layerDigest = null,
        ImmutableArray<string>? tags = null)
        => new(
            findingId,
            severity,
            environment,
            source,
            vendor,
            license,
            image,
            repository,
            package,
            purl,
            cve,
            path,
            layerDigest,
            tags ?? ImmutableArray<string>.Empty);
}
