38 lines
1.3 KiB
C#
38 lines
1.3 KiB
C#
namespace QuestionsApi.Services;
|
|
|
|
public sealed class ExamSimulationScoringMigrationService : BackgroundService
|
|
{
|
|
private readonly ExamSimulationStore _simulations;
|
|
private readonly ILogger<ExamSimulationScoringMigrationService> _logger;
|
|
|
|
public ExamSimulationScoringMigrationService(
|
|
ExamSimulationStore simulations,
|
|
ILogger<ExamSimulationScoringMigrationService> logger)
|
|
{
|
|
_simulations = simulations;
|
|
_logger = logger;
|
|
}
|
|
|
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
|
{
|
|
try
|
|
{
|
|
var result = await _simulations.BackfillScoringModelAsync(stoppingToken);
|
|
_logger.LogInformation(
|
|
"Exam simulation scoring migration completed; recalculated {UpdatedCount} simulation(s)",
|
|
result.UpdatedCount);
|
|
foreach (var reference in result.MissingQuestionIds)
|
|
_logger.LogWarning(
|
|
"Exam simulation scoring migration used neutral difficulty for missing question {Reference}",
|
|
reference);
|
|
}
|
|
catch (OperationCanceledException) when (stoppingToken.IsCancellationRequested)
|
|
{
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
_logger.LogError(exception, "Exam simulation scoring migration failed");
|
|
}
|
|
}
|
|
}
|