Convert logic-free classes to records per CLAUDE.md

WebhookEvent, FeatureStateResult, ProjectPermissionRequirement, AuditLog,
Tag, and FeatureUsageDaily are plain data holders with no behavior, so
switch them to records. EF-mapped entities with identity semantics
(User, Organization, Project, Feature, Segment, etc.) stay classes,
since record value-equality and deep ToString fight EF's change tracker.

Also restore `virtual` on AuditService.RecordAsync/LogAsync, which had
been dropped and broke Mock<AuditService>-based test setups.
This commit is contained in:
2026-07-05 22:20:41 -07:00
parent 27497e31a9
commit 75595970fb
12 changed files with 26 additions and 44 deletions

View File

@@ -1,6 +1,6 @@
namespace MicCheck.Api.Features;
public class FeatureStateResult
public record FeatureStateResult
{
public required Feature Feature { get; init; }
public bool Enabled { get; init; }