Compare commits

...

1 Commits

Author SHA1 Message Date
Ayan Poddar
34e3ce8ce1 add the replace 2025-07-02 16:58:01 +05:30
3 changed files with 40 additions and 19 deletions

View File

@ -17,6 +17,7 @@
<PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="9.0.0" /> <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="9.0.0" />
<PackageReference Include="AspNetCore.HealthChecks.UI.InMemory.Storage" Version="9.0.0" /> <PackageReference Include="AspNetCore.HealthChecks.UI.InMemory.Storage" Version="9.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="9.0.4" /> <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="9.0.4" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="Serilog.AspNetCore" Version="9.0.0" /> <PackageReference Include="Serilog.AspNetCore" Version="9.0.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="2.1.0" /> <PackageReference Include="Serilog.Sinks.Async" Version="2.1.0" />
</ItemGroup> </ItemGroup>

View File

@ -2,8 +2,10 @@
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Newtonsoft.Json.Linq;
using System; using System;
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using VaultSharp; using VaultSharp;
@ -16,24 +18,43 @@ public static class EnviromentLoader
{ {
public static async Task SetDatabaseEnviroment([NotNull] this WebApplicationBuilder builder) public static async Task SetDatabaseEnviroment([NotNull] this WebApplicationBuilder builder)
{ {
if (!builder.Environment.IsProduction()) #if !DEBUG
return; builder.Host.AddAppSettingsSecretsJson();
#else
var stream = await GetUpdatedConnectionStringsStreamAsync("appsettings.json");
builder.Configuration.AddJsonStream(stream);
#endif
var connectionSection = builder.Configuration.GetSection("ConnectionStrings");
var connections = connectionSection.GetChildren();
var sb = new StringBuilder();
foreach (var connection in connections)
{
sb.Append(connection.Path);
sb.Append('=');
sb.Append(await UpdateVaue(connection.Key));
}
builder.Configuration.AddEnvironmentVariables(sb.ToString());
} }
private static async Task<string> UpdateVaue(string key) public static async Task<Stream> GetUpdatedConnectionStringsStreamAsync(string file)
{
var content = JObject.Parse(await File.ReadAllTextAsync(file));
if (content["ConnectionStrings"] is not JObject jsonReader)
return Stream.Null;
foreach (var item in jsonReader.Properties())
{
var value = await UpdateValue(item.Name);
if (!string.IsNullOrEmpty(value))
{
jsonReader[item.Name] = value;
}
}
var memoryStream = new MemoryStream();
using (var writer = new StreamWriter(memoryStream, leaveOpen: true))
{
await writer.WriteAsync(content.ToString());
await writer.FlushAsync();
}
memoryStream.Position = 0;
return memoryStream;
}
private static async Task<string> UpdateValue(string key)
{ {
var secrate = await GetSecret(); var secrate = await GetSecret();
return secrate.Data.Data.TryGetValue(key, out var val) return secrate.Data.Data.TryGetValue(key, out var val)

View File

@ -23,16 +23,15 @@ public class Program
Log.Information("Starting Acme.BookStore.HttpApi.Host."); Log.Information("Starting Acme.BookStore.HttpApi.Host.");
var builder = WebApplication.CreateBuilder(args); var builder = WebApplication.CreateBuilder(args);
builder.Host builder.Host
.AddAppSettingsSecretsJson()
.UseAutofac() .UseAutofac()
.UseSerilog((context, services, loggerConfiguration) => .UseSerilog((context, services, loggerConfiguration) =>
{ {
loggerConfiguration loggerConfiguration
#if DEBUG #if DEBUG
.MinimumLevel.Debug() .MinimumLevel.Debug()
#else #else
.MinimumLevel.Information() .MinimumLevel.Information()
#endif #endif
.MinimumLevel.Override("Microsoft", LogEventLevel.Information) .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning) .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning)
.Enrich.FromLogContext() .Enrich.FromLogContext()