save progress
This commit is contained in:
86
src/__Libraries/StellaOps.Facet/FacetExtractionResult.cs
Normal file
86
src/__Libraries/StellaOps.Facet/FacetExtractionResult.cs
Normal file
@@ -0,0 +1,86 @@
|
||||
// <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; }
|
||||
}
|
||||
Reference in New Issue
Block a user