Clinical Sync Batch Engine: first commit
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||
|
||||
public class ClinicalSyncBatchConfiguration : IEntityTypeConfiguration<ClinicalSyncBatch>
|
||||
{
|
||||
public void Configure(EntityTypeBuilder<ClinicalSyncBatch> builder)
|
||||
{
|
||||
builder.ToTable("clinical_sync_batches", t =>
|
||||
{
|
||||
t.HasCheckConstraint("chk_clinical_sync_batches_status",
|
||||
"status IN ('RECEIVED','PROCESSING','APPLIED','CONFLICT','REJECTED')");
|
||||
});
|
||||
builder.HasKey(b => b.Id);
|
||||
builder.Property(b => b.Id).HasColumnName("id").HasDefaultValueSql("gen_random_uuid()");
|
||||
builder.Property(b => b.GatewayId).HasColumnName("gateway_id");
|
||||
builder.Property(b => b.SiteId).HasColumnName("site_id");
|
||||
builder.Property(b => b.BatchReference).HasColumnName("batch_reference");
|
||||
builder.Property(b => b.Status)
|
||||
.HasColumnName("status")
|
||||
.HasMaxLength(16)
|
||||
.HasConversion(v => v.ToDbString(), v => ClinicalSyncBatchStatusExtensions.FromDbString(v))
|
||||
.HasDefaultValueSql("'RECEIVED'");
|
||||
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");
|
||||
|
||||
builder.HasOne(b => b.Gateway)
|
||||
.WithMany()
|
||||
.HasForeignKey(b => b.GatewayId)
|
||||
.OnDelete(DeleteBehavior.Restrict);
|
||||
|
||||
builder.HasOne<ClinicalSite>()
|
||||
.WithMany()
|
||||
.HasForeignKey(b => b.SiteId)
|
||||
.OnDelete(DeleteBehavior.Restrict);
|
||||
|
||||
builder.HasIndex(b => b.BatchReference).IsUnique();
|
||||
builder.HasIndex(b => new { b.GatewayId, b.SubmittedAt });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user