Files
MoShiro/backend/src/Monitor.Backend.Application/StartupTasks.cs
T
2026-10-04 21:46:39 +08:00

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;
}