51 lines
1.2 KiB
C#
51 lines
1.2 KiB
C#
namespace StellaOps.Provcache;
|
|
|
|
/// <summary>
|
|
/// Result of a single cache lookup.
|
|
/// </summary>
|
|
public sealed record ProvcacheLookupResult
|
|
{
|
|
/// <summary>
|
|
/// Whether the entry was found in cache.
|
|
/// </summary>
|
|
public required bool IsHit { get; init; }
|
|
|
|
/// <summary>
|
|
/// The cache entry if found.
|
|
/// </summary>
|
|
public ProvcacheEntry? Entry { get; init; }
|
|
|
|
/// <summary>
|
|
/// Source of the cache hit (e.g., "valkey", "postgres").
|
|
/// Null for cache misses.
|
|
/// </summary>
|
|
public string? Source { get; init; }
|
|
|
|
/// <summary>
|
|
/// Time taken for the lookup in milliseconds.
|
|
/// </summary>
|
|
public double ElapsedMs { get; init; }
|
|
|
|
/// <summary>
|
|
/// Creates a cache hit result.
|
|
/// </summary>
|
|
public static ProvcacheLookupResult Hit(ProvcacheEntry entry, string source, double elapsedMs) => new()
|
|
{
|
|
IsHit = true,
|
|
Entry = entry,
|
|
Source = source,
|
|
ElapsedMs = elapsedMs
|
|
};
|
|
|
|
/// <summary>
|
|
/// Creates a cache miss result.
|
|
/// </summary>
|
|
public static ProvcacheLookupResult Miss(double elapsedMs) => new()
|
|
{
|
|
IsHit = false,
|
|
Entry = null,
|
|
Source = null,
|
|
ElapsedMs = elapsedMs
|
|
};
|
|
}
|