Update to allow for seeding of database
CI / backend (push) Successful in 9m43s
CI / frontend (push) Successful in 1m52s

This commit is contained in:
2026-08-11 05:29:51 +08:00
parent 1ade75b635
commit 8b1eddb587
9 changed files with 287 additions and 7 deletions
+23 -3
View File
@@ -170,9 +170,15 @@ try
builder.Services.Configure<SimulationOptions>(
builder.Configuration.GetSection(SimulationOptions.Section));
builder.Services.Configure<SeedingOptions>(
builder.Configuration.GetSection(SeedingOptions.Section));
var simulationOptions = builder.Configuration
.GetSection(SimulationOptions.Section).Get<SimulationOptions>() ?? new();
var seedingOptions = builder.Configuration.GetSection(SeedingOptions.Section).Get<SeedingOptions>()
?? new SeedingOptions();
if (simulationOptions.Enabled)
{
builder.Services.AddHttpClient("simulation-loopback", c =>
@@ -358,8 +364,8 @@ try
var app = builder.Build();
// One-shot CLI verbs exit before hosting. Skip demo seeding for them so
// create-admin / register-gateway never race the demo UserSeeder.
// One-shot CLI verbs exit before hosting. Skip seeding for them so
// create-admin / register-gateway never race auto-bootstrap.
var isCliCommand = args.Contains("encrypt-phi")
|| args.Contains("create-admin")
|| args.Contains("register-gateway");
@@ -375,10 +381,24 @@ try
// must never be created in production. Seeding:EnableDemoData defaults to
// true so local development and the existing verification scripts are
// unaffected; appsettings.Production.json sets it to false.
var enableDemoData = builder.Configuration.GetValue("Seeding:EnableDemoData", true)
var enableDemoData = seedingOptions.EnableDemoData
&& !app.Environment.IsEnvironment("Testing")
&& !isCliCommand;
var runBootstrap = !app.Environment.IsEnvironment("Testing") && !isCliCommand;
if (runBootstrap)
{
using var scope = app.Services.CreateScope();
var db = scope.ServiceProvider.GetRequiredService<AppDbContext>();
var redis = scope.ServiceProvider.GetRequiredService<IConnectionMultiplexer>();
var bootstrapLogger = scope.ServiceProvider
.GetRequiredService<ILoggerFactory>()
.CreateLogger("BootstrapSeeder");
// Always: default thresholds (+ optional bootstrap users / site+gateway from config).
await BootstrapSeeder.SeedAsync(db, redis, seedingOptions, bootstrapLogger);
}
if (enableDemoData)
{
using var scope = app.Services.CreateScope();