docs: add XML documentation and ConfigManager implementation plans

Add comprehensive XML documentation (param/returns tags) across 132 source
files to improve IntelliSense and API discoverability. Include ConfigManager
design documents and implementation plans for phases 1-9.
This commit is contained in:
Joseph Doherty
2026-01-20 02:26:26 -05:00
parent c044337539
commit d49330e697
136 changed files with 9181 additions and 4 deletions
@@ -7,6 +7,9 @@ public record DevPipelinesRoot(
DevPipelineSettings? Settings,
Dictionary<string, DevPipelineConfig> Pipelines)
{
/// <summary>
/// Gets the effective settings, using defaults if not specified.
/// </summary>
public DevPipelineSettings EffectiveSettings => Settings ?? new DevPipelineSettings();
}
@@ -15,6 +15,12 @@ public class DevEtlRegistry
private readonly string _cacheDirectory;
private readonly ILogger<DevEtlRegistry>? _logger;
/// <summary>
/// Initializes a new instance of the DevEtlRegistry.
/// </summary>
/// <param name="pipelineFactory">The factory for creating ETL pipelines.</param>
/// <param name="cacheDirectory">The directory containing cached protobuf files.</param>
/// <param name="logger">Optional logger for recording ETL operations.</param>
public DevEtlRegistry(
IDevEtlPipelineFactory pipelineFactory,
string cacheDirectory,
@@ -32,8 +38,16 @@ public class DevEtlRegistry
_logger = logger;
}
/// <summary>
/// Gets the list of available tables that can be loaded.
/// </summary>
public IEnumerable<string> GetAvailableTables() => _pipelineFactory.GetAvailableTables();
/// <summary>
/// Runs the ETL pipeline for a single table.
/// </summary>
/// <param name="tableName">The name of the table to load.</param>
/// <param name="cancellationToken">The cancellation token.</param>
public async Task<PipelineResult> RunAsync(string tableName, CancellationToken cancellationToken = default)
{
_logger?.LogInformation("Running dev ETL for {TableName}", tableName);
@@ -51,6 +65,10 @@ public class DevEtlRegistry
return result;
}
/// <summary>
/// Runs the ETL pipeline for all available tables sequentially.
/// </summary>
/// <param name="cancellationToken">The cancellation token.</param>
public async Task<IReadOnlyList<PipelineResult>> RunAllAsync(CancellationToken cancellationToken = default)
{
var results = new List<PipelineResult>();
@@ -31,6 +31,9 @@ public class DevEtlPipelineFactory : IDevEtlPipelineFactory
/// <summary>
/// Creates a new development pipeline factory.
/// </summary>
/// <param name="connectionFactory">Factory for creating database connections.</param>
/// <param name="options">Configuration options for the development pipeline.</param>
/// <param name="logger">Logger for pipeline operations.</param>
public DevEtlPipelineFactory(
IDbConnectionFactory connectionFactory,
IOptions<DevPipelineOptions> options,
@@ -49,6 +52,9 @@ public class DevEtlPipelineFactory : IDevEtlPipelineFactory
/// <summary>
/// Creates a new development pipeline factory with pre-loaded config (for testing).
/// </summary>
/// <param name="connectionFactory">Factory for creating database connections.</param>
/// <param name="config">Pre-loaded pipeline configuration.</param>
/// <param name="logger">Logger for pipeline operations.</param>
internal DevEtlPipelineFactory(
IDbConnectionFactory connectionFactory,
DevPipelinesRoot config,
@@ -26,8 +26,17 @@ public sealed class ProtobufZstdFileSource : IImportSource
private BufferedStream? _bufferedStream;
private IDataReader? _reader;
/// <summary>
/// The name of this source, including the file name.
/// </summary>
public string SourceName => $"Protobuf:{Path.GetFileName(_filePath)}";
/// <summary>
/// Initializes a new instance of the <see cref="ProtobufZstdFileSource"/> class.
/// </summary>
/// <param name="filePath">The path to the zstd-compressed protobuf file.</param>
/// <exception cref="ArgumentException">Thrown when filePath is null or empty.</exception>
/// <exception cref="FileNotFoundException">Thrown when the file does not exist.</exception>
public ProtobufZstdFileSource(string filePath)
{
if (string.IsNullOrWhiteSpace(filePath))
@@ -39,6 +48,12 @@ public sealed class ProtobufZstdFileSource : IImportSource
_filePath = filePath;
}
/// <summary>
/// Reads and decompresses the protobuf file, returning an IDataReader for deserialization.
/// </summary>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>An IDataReader for reading the decompressed protobuf data.</returns>
/// <exception cref="InvalidOperationException">Thrown if ReadDataAsync has already been called.</exception>
public async Task<IDataReader> ReadDataAsync(CancellationToken cancellationToken = default)
{
if (_fileStream != null)
@@ -85,6 +100,9 @@ public sealed class ProtobufZstdFileSource : IImportSource
_fileStream = null;
}
/// <summary>
/// Disposes of all unmanaged resources associated with this source.
/// </summary>
public async ValueTask DisposeAsync()
{
if (_reader != null)