Files
nexus/backend/Program.cs
T
AzuTear cd8c78d165
CI - Build & Test / Backend (.NET) (push) Successful in 45s
CI - Build & Test / Backend integration (PostgreSQL/Toxiproxy) (push) Failing after 1m0s
CI - Build & Test / Frontend (Vue/TS) (push) Successful in 2m49s
CI - Build & Test / Security Check (push) Successful in 7s
CI - Build & Test / Deploy Nexus (push) Has been skipped
feat(stability): unify readiness and recovery
2026-08-01 01:21:33 +02:00

51 lines
1.7 KiB
C#

using Nexus.Api.Extensions;
using Nexus.Api.Http;
using System.Reflection;
var builder = WebApplication.CreateBuilder(args);
var isOpenApiGeneration =
Assembly.GetEntryAssembly()?.GetName().Name == "GetDocument.Insider";
if (isOpenApiGeneration)
{
// The build-time mock host never accepts traffic. It still constructs the
// auth services, so use an ephemeral contract-only signing value.
builder.Configuration["Jwt:Key"] =
"openapi-contract-generation-only-000000000000000000";
}
// --- Service Registration ---
builder.Services.AddNexusAuth(builder.Configuration);
builder.Services.AddNexusRateLimiting();
builder.Services.AddNexusForwardedHeaders(builder.Configuration);
builder.Services.AddNexusSwagger();
builder.Services.AddNexusDatabase(builder.Configuration);
builder.Services.AddNexusHttpClients(builder.Configuration);
builder.Services.AddNexusApplicationServices(
includeHostedServices: !isOpenApiGeneration,
includeMcp: !isOpenApiGeneration);
builder.Services.AddNexusRepositories();
builder.Services.AddNexusHealthChecks(builder.Configuration);
builder.Services.AddNexusPlatform(builder.Configuration);
builder.Services.AddControllers(options =>
options.Filters.Add<NexusProblemDetailsFilter>());
var app = builder.Build();
// Build-time OpenAPI extraction constructs the host without a database. The
// flag is supplied only by the project target; normal application starts keep
// the migration and seed gate mandatory.
if (!isOpenApiGeneration)
{
// --- Database Migration & Seeding ---
await app.EnsureDatabaseAsync();
}
// --- Middleware Pipeline ---
app.UseNexusPipeline(app.Environment);
if (!isOpenApiGeneration)
app.MapMcp("/mcp");
app.MapOpenApi("/openapi/{documentName}.json");
app.MapControllers();
app.Run();