28 lines
924 B
C#
28 lines
924 B
C#
using Microsoft.Extensions.Hosting;
|
|
using Microsoft.Extensions.Options;
|
|
using ZB.MOM.WW.Secrets.Sqlite;
|
|
|
|
namespace ZB.MOM.WW.Secrets.DependencyInjection;
|
|
|
|
/// <summary>
|
|
/// Runs the secrets SQLite schema migration at application startup when
|
|
/// <see cref="SecretsOptions.RunMigrationsOnStartup"/> is <see langword="true"/>. The migration is
|
|
/// idempotent, so repeated restarts are safe.
|
|
/// </summary>
|
|
internal sealed class SecretsMigrationHostedService(
|
|
SqliteSecretsStoreMigrator migrator,
|
|
IOptions<SecretsOptions> options) : IHostedService
|
|
{
|
|
/// <inheritdoc />
|
|
public async Task StartAsync(CancellationToken cancellationToken)
|
|
{
|
|
if (options.Value.RunMigrationsOnStartup)
|
|
{
|
|
await migrator.MigrateAsync(cancellationToken).ConfigureAwait(false);
|
|
}
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
|
|
}
|