M0: scaffold solution, EF+Timescale schema, /healthz
Five-project Clean Architecture solution (Core/Infrastructure/App + Core.Tests/ Integration.Tests) on .NET 10 with central package management, snake_case EF mapping, and shared build/style config. - Full domain entity set + EF DbContext for the SDD §5.3 schema (singular table names). - InitialSchema migration (relational) + TimescaleHypertables migration (raw SQL: create_hypertable + compression on reading, hypertable on consumption). - App wiring: Serilog (actually wired, unlike MQTTower), DbContext, migrate-on-startup, /healthz. Serves plain HTTP behind a reverse proxy (no HTTPS redirect). - deploy/Dockerfile (2-stage, ICU-capable) + docker-compose (app + timescaledb). - Integration.Tests: shared TimescaleFixture (Testcontainers) — migrations, hypertables, compression policy, and /healthz all verified green (4/4). Claude-Session: https://claude.ai/code/session_01WujdMtMJPbxDpDnMeK22rr
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
namespace MeterVault.Infrastructure.Options;
|
||||
|
||||
/// <summary>
|
||||
/// Root application options, bound from the "MeterVault" configuration section.
|
||||
/// Secrets (broker tokens etc.) live on individual endpoints by reference, not here.
|
||||
/// </summary>
|
||||
public sealed class MeterVaultOptions
|
||||
{
|
||||
public const string SectionName = "MeterVault";
|
||||
|
||||
/// <summary>IANA timezone used for local-midnight bucketing and display (SDD §10).</summary>
|
||||
public string TimeZone { get; set; } = "Europe/Berlin";
|
||||
|
||||
public string Currency { get; set; } = "EUR";
|
||||
|
||||
/// <summary>Default UI locale: 'en' (OSS default) or 'de'.</summary>
|
||||
public string Locale { get; set; } = "en";
|
||||
|
||||
/// <summary>Run EF migrations on startup. Disable for tests that migrate out-of-band.</summary>
|
||||
public bool RunMigrationsAtStartup { get; set; } = true;
|
||||
|
||||
/// <summary>How long full-resolution raw readings are retained (SDD §5.5, default 3 years).</summary>
|
||||
public int RawRetentionDays { get; set; } = 1095;
|
||||
}
|
||||
Reference in New Issue
Block a user