Files
monorepo/LCU.API.Internal.Document/OwnerNumberMigration/Migrations/MigrationManager.cs
T
2026-03-13 09:11:35 -05:00

37 lines
981 B
C#

using Microsoft.Extensions.Hosting;
namespace OwnerNumberMigration.Migrations;
public class MigrationManager : IMigrationManager
{
private readonly IHostApplicationLifetime _appLifetime;
private readonly IList<Task> _migrationTasks = new List<Task>();
private static readonly IReadOnlySet<TaskStatus> CompletedStatuses = new HashSet<TaskStatus>
{
TaskStatus.Faulted,
TaskStatus.Canceled,
TaskStatus.RanToCompletion
};
public MigrationManager(IHostApplicationLifetime appLifetime)
{
_appLifetime = appLifetime;
}
public void Start(Task migrationTask)
{
_migrationTasks.Add(migrationTask);
migrationTask.ContinueWith(_ =>
{
lock (_migrationTasks)
{
if (_migrationTasks.All(t => CompletedStatuses.Contains(t.Status)))
{
_appLifetime.StopApplication();
}
}
});
}
}