87 lines
2.4 KiB
C#
87 lines
2.4 KiB
C#
// <copyright file="FacetExtractionResult.cs" company="StellaOps">
|
|
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
|
|
// </copyright>
|
|
|
|
using System.Collections.Immutable;
|
|
|
|
namespace StellaOps.Facet;
|
|
|
|
/// <summary>
|
|
/// Result of facet extraction from an image.
|
|
/// </summary>
|
|
public sealed record FacetExtractionResult
|
|
{
|
|
/// <summary>
|
|
/// Gets the extracted facet entries.
|
|
/// </summary>
|
|
public required ImmutableArray<FacetEntry> Facets { get; init; }
|
|
|
|
/// <summary>
|
|
/// Gets files that didn't match any facet selector.
|
|
/// </summary>
|
|
public required ImmutableArray<FacetFileEntry> UnmatchedFiles { get; init; }
|
|
|
|
/// <summary>
|
|
/// Gets files that were skipped (too large, unreadable, etc.).
|
|
/// </summary>
|
|
public required ImmutableArray<SkippedFile> SkippedFiles { get; init; }
|
|
|
|
/// <summary>
|
|
/// Gets the combined Merkle root of all facets.
|
|
/// </summary>
|
|
public required string CombinedMerkleRoot { get; init; }
|
|
|
|
/// <summary>
|
|
/// Gets extraction statistics.
|
|
/// </summary>
|
|
public required FacetExtractionStats Stats { get; init; }
|
|
|
|
/// <summary>
|
|
/// Gets extraction warnings (non-fatal issues).
|
|
/// </summary>
|
|
public ImmutableArray<string> Warnings { get; init; } = [];
|
|
}
|
|
|
|
/// <summary>
|
|
/// A file that was skipped during extraction.
|
|
/// </summary>
|
|
/// <param name="Path">The file path.</param>
|
|
/// <param name="Reason">Why the file was skipped.</param>
|
|
public sealed record SkippedFile(string Path, string Reason);
|
|
|
|
/// <summary>
|
|
/// Statistics from facet extraction.
|
|
/// </summary>
|
|
public sealed record FacetExtractionStats
|
|
{
|
|
/// <summary>
|
|
/// Gets the total files processed.
|
|
/// </summary>
|
|
public required int TotalFilesProcessed { get; init; }
|
|
|
|
/// <summary>
|
|
/// Gets the total bytes across all files.
|
|
/// </summary>
|
|
public required long TotalBytes { get; init; }
|
|
|
|
/// <summary>
|
|
/// Gets the number of files matched to facets.
|
|
/// </summary>
|
|
public required int FilesMatched { get; init; }
|
|
|
|
/// <summary>
|
|
/// Gets the number of files not matching any facet.
|
|
/// </summary>
|
|
public required int FilesUnmatched { get; init; }
|
|
|
|
/// <summary>
|
|
/// Gets the number of files skipped.
|
|
/// </summary>
|
|
public required int FilesSkipped { get; init; }
|
|
|
|
/// <summary>
|
|
/// Gets the extraction duration.
|
|
/// </summary>
|
|
public required TimeSpan Duration { get; init; }
|
|
}
|