Skip to content

Commit 6764f5e

Browse files
committed
Enforce DatabaseSettings validation in AddInfrastructure for all host modes
Move ValidateDataAnnotations/ValidateOnStart for DatabaseSettings from the API-only OptionsValidationRegistration into AddInfrastructure so that CLI and MCP hosts also enforce the [Range(1, 300)] constraint on CommandTimeoutSeconds at startup. Remove the now-duplicate registration from OptionsValidationRegistration.
1 parent ab5eac7 commit 6764f5e

2 files changed

Lines changed: 8 additions & 4 deletions

File tree

backend/src/Taskdeck.Api/Extensions/OptionsValidationRegistration.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,6 @@ public static IServiceCollection AddOptionsValidation(
4545

4646
services.RegisterValidatedOptions<CacheSettings>(configuration, "Cache");
4747

48-
// ── Settings from Infrastructure (Database resilience) ─────────────
49-
50-
services.RegisterValidatedOptions<DatabaseSettings>(configuration, "Database");
51-
5248
// ── Cross-property validators (IValidateOptions<T>) ─────────────────
5349

5450
services.AddSingleton<IValidateOptions<WorkerSettings>, WorkerSettingsValidator>();

backend/src/Taskdeck.Infrastructure/DependencyInjection.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,14 @@ public static IServiceCollection AddInfrastructure(this IServiceCollection servi
2323
var databaseSettings = configuration.GetSection("Database").Get<DatabaseSettings>()
2424
?? new DatabaseSettings();
2525

26+
// Enforce validation for all host modes (API, CLI, MCP).
27+
// ValidateOnStart causes an exception at startup if CommandTimeoutSeconds
28+
// is out of the [1, 300] range, regardless of which host runs AddInfrastructure.
29+
services.AddOptions<DatabaseSettings>()
30+
.Bind(configuration.GetSection("Database"))
31+
.ValidateDataAnnotations()
32+
.ValidateOnStart();
33+
2634
services.AddDbContext<TaskdeckDbContext>(options =>
2735
options.UseSqlite(connectionString, sqliteOptions =>
2836
{

0 commit comments

Comments
 (0)