Files
allstarr/allstarr/Services/Validation/StartupValidationOrchestrator.cs
2026-02-03 01:44:02 -05:00

60 lines
1.9 KiB
C#

using Microsoft.Extensions.Options;
using allstarr.Models.Settings;
namespace allstarr.Services.Validation;
/// <summary>
/// Orchestrates startup validation for all configured services.
/// This replaces the old StartupValidationService with a more extensible architecture.
/// </summary>
public class StartupValidationOrchestrator : IHostedService
{
private readonly IEnumerable<IStartupValidator> _validators;
private readonly IOptions<SubsonicSettings> _subsonicSettings;
public StartupValidationOrchestrator(
IEnumerable<IStartupValidator> validators,
IOptions<SubsonicSettings> subsonicSettings)
{
_validators = validators;
_subsonicSettings = subsonicSettings;
}
public async Task StartAsync(CancellationToken cancellationToken)
{
// Get version from assembly
var version = typeof(StartupValidationOrchestrator).Assembly
.GetName().Version?.ToString(3) ?? "unknown";
Console.WriteLine();
Console.WriteLine("========================================");
Console.WriteLine($" allstarr v{version} ");
Console.WriteLine("========================================");
Console.WriteLine();
// Run all validators
foreach (var validator in _validators)
{
try
{
await validator.ValidateAsync(cancellationToken);
}
catch (Exception ex)
{
Console.WriteLine($"Error validating {validator.ServiceName}: {ex.Message}");
}
}
Console.WriteLine();
Console.WriteLine("========================================");
Console.WriteLine(" Startup validation complete ");
Console.WriteLine("========================================");
Console.WriteLine();
}
public Task StopAsync(CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
}