namespace AIStudio.Tools.Services; public sealed class FileEnumerationResult { public List Files { get; } = []; public List Failures { get; } = []; public int FailedFiles { get; set; } public string LastError { get; set; } = string.Empty; /// /// The folders whose content could not be listed. The files below them are out of reach, not gone. /// public List UnreadableDirectories { get; } = []; /// /// Why the file or the folder of the data source itself could not be reached, or null when it could. /// public string? UnreachableRootReason { get; set; } public void AddFailure(string filePath, string reason) { this.Failures.Add(new DataSourceEmbeddingFailure(filePath, reason, DateTimeOffset.UtcNow)); this.FailedFiles = this.Failures.Count; this.LastError = reason; } public void AddUnreadableDirectory(string directoryPath, string reason) { this.UnreadableDirectories.Add(directoryPath); this.AddFailure(directoryPath, reason); } }