31 lines
1011 B
C#
31 lines
1011 B
C#
using Microsoft.Extensions.Hosting;
|
|
|
|
namespace Monitor.Backend.Application;
|
|
|
|
/// <summary>
|
|
/// 启动时最先执行:截断没有索引记录的段文件尾部、创建初始管理员、创建默认的线路任务模板。
|
|
/// 宿主按注册顺序依次等待各个 IHostedService 启动,所以它需要最先注册。
|
|
/// </summary>
|
|
public sealed class StartupTasks : IHostedService
|
|
{
|
|
private readonly IRawStore _raw;
|
|
private readonly AuthService _auth;
|
|
private readonly TaskService _tasks;
|
|
|
|
public StartupTasks(IRawStore raw, AuthService auth, TaskService tasks)
|
|
{
|
|
_raw = raw;
|
|
_auth = auth;
|
|
_tasks = tasks;
|
|
}
|
|
|
|
public async Task StartAsync(CancellationToken cancellationToken)
|
|
{
|
|
await _raw.RecoverAsync(cancellationToken);
|
|
await _auth.EnsureInitialAdminAsync(cancellationToken);
|
|
await _tasks.SeedDefaultsAsync(cancellationToken);
|
|
}
|
|
|
|
public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
|
|
}
|