using System.IO; namespace StellaOps.Scanner.Cache; public sealed class ScannerCacheOptions { private const long DefaultMaxBytes = 5L * 1024 * 1024 * 1024; // 5 GiB public bool Enabled { get; set; } = true; public string RootPath { get; set; } = Path.Combine("cache", "scanner"); public string LayersDirectoryName { get; set; } = "layers"; public string FileCasDirectoryName { get; set; } = "cas"; public TimeSpan LayerTtl { get; set; } = TimeSpan.FromDays(45); public TimeSpan FileTtl { get; set; } = TimeSpan.FromDays(30); public long MaxBytes { get; set; } = DefaultMaxBytes; public long WarmBytesThreshold { get; set; } = DefaultMaxBytes / 5; // 20 % public long ColdBytesThreshold { get; set; } = (DefaultMaxBytes * 4) / 5; // 80 % public bool EnableAutoEviction { get; set; } = true; public TimeSpan MaintenanceInterval { get; set; } = TimeSpan.FromMinutes(15); public bool EnableFileCas { get; set; } = true; public string? ImportDirectory { get; set; } public string? ExportDirectory { get; set; } public string LayersDirectoryPath => Path.Combine(RootPath, LayersDirectoryName); public string FileCasDirectoryPath => Path.Combine(RootPath, FileCasDirectoryName); }