using ErsatzTV.Core.Domain; using ErsatzTV.Core.Interfaces.Repositories; using Serilog.Events; namespace ErsatzTV.Application.Configuration; public class GetLoggingSettingsHandler : IRequestHandler { private readonly IConfigElementRepository _configElementRepository; public GetLoggingSettingsHandler(IConfigElementRepository configElementRepository) => _configElementRepository = configElementRepository; public async Task Handle(GetLoggingSettings request, CancellationToken cancellationToken) { Option maybeDefaultLevel = await _configElementRepository.GetValue(ConfigElementKey.MinimumLogLevel, cancellationToken); Option maybeScanningLevel = await _configElementRepository.GetValue( ConfigElementKey.MinimumLogLevelScanning, cancellationToken); Option maybeSchedulingLevel = await _configElementRepository.GetValue( ConfigElementKey.MinimumLogLevelScheduling, cancellationToken); Option maybeSearchingLevel = await _configElementRepository.GetValue( ConfigElementKey.MinimumLogLevelSearching, cancellationToken); Option maybeStreamingLevel = await _configElementRepository.GetValue( ConfigElementKey.MinimumLogLevelStreaming, cancellationToken); Option maybeHttpLevel = await _configElementRepository.GetValue( ConfigElementKey.MinimumLogLevelHttp, cancellationToken); return new LoggingSettingsViewModel { DefaultMinimumLogLevel = await maybeDefaultLevel.IfNoneAsync(LogEventLevel.Information), ScanningMinimumLogLevel = await maybeScanningLevel.IfNoneAsync(LogEventLevel.Information), SchedulingMinimumLogLevel = await maybeSchedulingLevel.IfNoneAsync(LogEventLevel.Information), SearchingMinimumLogLevel = await maybeSearchingLevel.IfNoneAsync(LogEventLevel.Information), StreamingMinimumLogLevel = await maybeStreamingLevel.IfNoneAsync(LogEventLevel.Information), HttpMinimumLogLevel = await maybeHttpLevel.IfNoneAsync(LogEventLevel.Information) }; } }