diff options
| author | ivarlovlie <git@ivarlovlie.no> | 2022-06-05 00:19:10 +0200 |
|---|---|---|
| committer | ivarlovlie <git@ivarlovlie.no> | 2022-06-05 00:19:10 +0200 |
| commit | 1bd30ee34323f150c63fc537e0d131dca29dc4ef (patch) | |
| tree | 12f8315916537bd4c9692a2d220a819e78a892fb /server/src/Program.cs | |
| parent | d46743d565461144e1aabfb4b6a297d8387c4075 (diff) | |
| download | greatoffice-1bd30ee34323f150c63fc537e0d131dca29dc4ef.tar.xz greatoffice-1bd30ee34323f150c63fc537e0d131dca29dc4ef.zip | |
refactor: Implement caching in VaultService and use VaultService instead of IOptions
Diffstat (limited to 'server/src/Program.cs')
| -rw-r--r-- | server/src/Program.cs | 34 |
1 files changed, 6 insertions, 28 deletions
diff --git a/server/src/Program.cs b/server/src/Program.cs index e6e8369..4499b1a 100644 --- a/server/src/Program.cs +++ b/server/src/Program.cs @@ -42,7 +42,6 @@ using IOL.GreatOffice.Api.Endpoints.V1; using IOL.GreatOffice.Api.Jobs; using Microsoft.AspNetCore.HttpOverrides; using Microsoft.AspNetCore.Mvc.Versioning; -using Microsoft.Extensions.Options; using Quartz; namespace IOL.GreatOffice.Api; @@ -53,20 +52,13 @@ public static class Program var builder = WebApplication.CreateBuilder(args); builder.Services.AddLogging(); builder.Services.AddHttpClient(); - + builder.Services.AddMemoryCache(); builder.Services.AddScoped<MailService>(); builder.Services.AddScoped<ForgotPasswordService>(); builder.Services.AddScoped<UserService>(); - builder.Services.AddScoped<VaultService>(); + builder.Services.AddTransient<VaultService>(); var vaultService = builder.Services.BuildServiceProvider().GetRequiredService<VaultService>(); - var configurationResponse = vaultService.GetSecretAsync<AppConfiguration>(builder.Configuration.GetValue<string>(AppEnvironmentVariables.MAIN_CONFIG_SHEET)).Result; - builder.Services.AddOptions<AppConfiguration>() - .Configure(o => { - foreach (var property in typeof(AppConfiguration).GetProperties().Where(p => p.CanWrite)) { - property.SetValue(o, property.GetValue(configurationResponse.Data.Data, null), null); - } - }); - var configuration = builder.Services.BuildServiceProvider().GetRequiredService<IOptions<AppConfiguration>>().Value; + var configuration = vaultService.GetCurrentAppConfiguration(); var logger = new LoggerConfiguration() .Enrich.FromLogContext() .ReadFrom.Configuration(builder.Configuration) @@ -78,20 +70,7 @@ public static class Program Log.Logger = logger.CreateLogger(); Log.Information("Starting web host, " - + JsonSerializer.Serialize(new { - DateTime.UtcNow, - PID = Environment.ProcessId, - configuration.DB_HOST, - configuration.DB_PORT, - configuration.DB_USER, - configuration.DB_NAME, - DB_PASS = configuration.DB_PASSWORD.Obfuscate() ?? "!!!Empty!!!", - configuration.QUARTZ_DB_HOST, - configuration.QUARTZ_DB_PORT, - configuration.QUARTZ_DB_USER, - configuration.QUARTZ_DB_NAME, - QUARTZ_DB_PASS = configuration.QUARTZ_DB_PASSWORD.Obfuscate() ?? "!!!Empty!!!", - }, + + JsonSerializer.Serialize(configuration.GetPublicVersion(), new JsonSerializerOptions() { WriteIndented = true })); @@ -115,7 +94,7 @@ public static class Program builder.Services.Configure(JsonSettings.Default); builder.Services.AddQuartz(options => { options.UsePersistentStore(o => { - o.UsePostgres(builder.Configuration.GetQuartzDatabaseConnectionString(configuration)); + o.UsePostgres(builder.Configuration.GetQuartzDatabaseConnectionString(vaultService.GetCurrentAppConfiguration)); o.UseSerializer<QuartzJsonSerializer>(); }); options.UseMicrosoftDependencyInjectionJobFactory(); @@ -154,9 +133,8 @@ public static class Program }) .AddScheme<AuthenticationSchemeOptions, BasicAuthenticationHandler>(AppConstants.BASIC_AUTH_SCHEME, default); - builder.Services.AddDbContext<AppDbContext>(options => { - options.UseNpgsql(builder.Configuration.GetAppDatabaseConnectionString(configuration), + options.UseNpgsql(builder.Configuration.GetAppDatabaseConnectionString(vaultService.GetCurrentAppConfiguration), npgsqlDbContextOptionsBuilder => { npgsqlDbContextOptionsBuilder.UseQuerySplittingBehavior(QuerySplittingBehavior.SplitQuery); npgsqlDbContextOptionsBuilder.EnableRetryOnFailure(5, TimeSpan.FromSeconds(10), default); |
