48a7f5a825
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
56 lines
2.1 KiB
INI
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
|