summaryrefslogtreecommitdiffstats
path: root/server/src/Program.cs
diff options
context:
space:
mode:
authorivarlovlie <git@ivarlovlie.no>2022-06-05 00:19:10 +0200
committerivarlovlie <git@ivarlovlie.no>2022-06-05 00:19:10 +0200
commit1bd30ee34323f150c63fc537e0d131dca29dc4ef (patch)
tree12f8315916537bd4c9692a2d220a819e78a892fb /server/src/Program.cs
parentd46743d565461144e1aabfb4b6a297d8387c4075 (diff)
downloadgreatoffice-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.cs34
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);