Bundle B1 of Audit Log #23 M3: introduces the SiteCall entity + EF mapping for the central SiteCalls operational-state table. One row per TrackedOperationId, mirrored from sites via best-effort telemetry then periodic reconciliation; eventually-consistent mirror, not a dispatcher. - src/ScadaLink.Commons/Entities/Audit/SiteCall.cs: append-once record with required TrackedOperationId/Channel/Target/SourceSite/Status, monotonic status update at the repo layer. - src/ScadaLink.ConfigurationDatabase/Configurations/SiteCallEntityTypeConfiguration.cs: table SiteCalls, PK on TrackedOperationId (stored as varchar(36) via value conversion through the canonical 'D'-format GUID string — matches the wire shape used by gRPC + SQLite columns), two named indexes (IX_SiteCalls_Source_Created, IX_SiteCalls_Status_Updated). - ScadaLinkDbContext: DbSet<SiteCall> SiteCalls in the existing Audit section, after AuditLogs. - Tests in tests/ScadaLink.ConfigurationDatabase.Tests/Configurations/: table name, PK, value-conversion shape, index presence + ordering.
This commit is contained in:
@@ -85,6 +85,7 @@ public class ScadaLinkDbContext : DbContext, IDataProtectionKeyContext
|
||||
// Audit
|
||||
public DbSet<AuditLogEntry> AuditLogEntries => Set<AuditLogEntry>();
|
||||
public DbSet<AuditEvent> AuditLogs => Set<AuditEvent>();
|
||||
public DbSet<SiteCall> SiteCalls => Set<SiteCall>();
|
||||
|
||||
// Data Protection Keys (for shared ASP.NET Data Protection across nodes)
|
||||
public DbSet<DataProtectionKey> DataProtectionKeys => Set<DataProtectionKey>();
|
||||
|
||||
Reference in New Issue
Block a user