feature: Site & Gateway Registry + Clinical Sync Contracts

This commit is contained in:
voltsrage
2026-06-23 04:31:15 +08:00
parent c9994b1ba2
commit efe5419da4
24 changed files with 547 additions and 19 deletions
@@ -19,7 +19,8 @@ public class ClinicalSyncBatchConfiguration : IEntityTypeConfiguration<ClinicalS
.HasColumnName("status")
.HasMaxLength(16)
.HasConversion(v => v.ToDbString(), v => ClinicalSyncBatchStatusExtensions.FromDbString(v))
.HasDefaultValueSql("'RECEIVED'");
.HasDefaultValueSql("'RECEIVED'")
.HasSentinel((ClinicalSyncBatchStatus)(-1));
builder.Property(b => b.Payload).HasColumnName("payload").HasColumnType("jsonb");
builder.Property(b => b.SubmittedAt).HasColumnName("submitted_at").HasDefaultValueSql("NOW()");
builder.Property(b => b.ProcessedAt).HasColumnName("processed_at");
@@ -19,7 +19,8 @@ public class WardGatewayConfiguration : IEntityTypeConfiguration<WardGateway>
.HasColumnName("status")
.HasMaxLength(16)
.HasConversion(v => v.ToDbString(), v => GatewayStatusExtensions.FromDbString(v))
.HasDefaultValueSql("'OFFLINE'");
.HasDefaultValueSql("'OFFLINE'")
.HasSentinel((GatewayStatus)(-1));
builder.Property(g => g.ReportedBufferDepth).HasColumnName("reported_buffer_depth").HasDefaultValue(0);
builder.Property(g => g.LastHeartbeatAt).HasColumnName("last_heartbeat_at");
builder.Property(g => g.LastSyncAt).HasColumnName("last_sync_at");