Files
MeterVault/.editorconfig
schmidt.florian 48a7f5a825 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
2026-07-13 11:02:21 +02:00

56 lines
2.1 KiB
INI

root = true
[*]
charset = utf-8
insert_final_newline = true
trim_trailing_whitespace = true
end_of_line = crlf
indent_style = space
[*.{cs,csx}]
indent_size = 4
[*.cs]
# Usings
dotnet_sort_system_directives_first = true
csharp_using_directive_placement = outside_namespace:suggestion
# Language style
csharp_style_namespace_declarations = file_scoped:warning
csharp_style_prefer_primary_constructors = true:suggestion
csharp_prefer_simple_using_statement = true:suggestion
csharp_style_expression_bodied_methods = when_on_single_line:suggestion
csharp_prefer_braces = true:suggestion
dotnet_style_prefer_conditional_expression_over_return = false:suggestion
# private fields => _camelCase
dotnet_naming_rule.private_fields_underscore.severity = suggestion
dotnet_naming_rule.private_fields_underscore.symbols = private_fields
dotnet_naming_rule.private_fields_underscore.style = underscore_prefix
dotnet_naming_symbols.private_fields.applicable_kinds = field
dotnet_naming_symbols.private_fields.applicable_accessibilities = private
dotnet_naming_style.underscore_prefix.capitalization = camel_case
dotnet_naming_style.underscore_prefix.required_prefix = _
# A few analyzer rules relaxed for a homelab app (don't block the build on these)
dotnet_diagnostic.CA1848.severity = none # LoggerMessage delegates — overkill here
dotnet_diagnostic.CA2007.severity = none # ConfigureAwait handled by convention, not enforced
dotnet_diagnostic.CA1515.severity = none # public types in app assemblies are fine
dotnet_diagnostic.CA1711.severity = none # domain names may end in Flags/Enum (e.g. ReadingFlags)
dotnet_diagnostic.CA1720.severity = none # identifiers containing type names (e.g. 'Value')
dotnet_diagnostic.CA1819.severity = none # properties returning arrays (DTOs)
# EF Core generated migrations: don't enforce our code-style opinions on tool output.
[**/Migrations/*.cs]
generated_code = true
dotnet_diagnostic.IDE0161.severity = none
dotnet_diagnostic.IDE0300.severity = none
dotnet_diagnostic.IDE0028.severity = none
dotnet_diagnostic.CA1861.severity = none
[*.{json,yml,yaml,csproj,props,targets}]
indent_size = 2
[*.razor]
indent_size = 4