feat(configdb): EF mappings + DbSets for native alarm source entities

This commit is contained in:
Joseph Doherty
2026-05-29 15:52:33 -04:00
parent 913441972e
commit 63f1ec282f
4 changed files with 108 additions and 0 deletions
@@ -53,10 +53,40 @@ public class InstanceConfiguration : IEntityTypeConfiguration<Instance>
.HasForeignKey(b => b.InstanceId)
.OnDelete(DeleteBehavior.Cascade);
builder.HasMany(i => i.NativeAlarmSourceOverrides)
.WithOne()
.HasForeignKey(o => o.InstanceId)
.OnDelete(DeleteBehavior.Cascade);
builder.HasIndex(i => new { i.SiteId, i.UniqueName }).IsUnique();
}
}
public class InstanceNativeAlarmSourceOverrideConfiguration : IEntityTypeConfiguration<InstanceNativeAlarmSourceOverride>
{
/// <summary>Configures the EF Core mapping for <see cref="InstanceNativeAlarmSourceOverride"/>.</summary>
/// <param name="builder">The entity type builder.</param>
public void Configure(EntityTypeBuilder<InstanceNativeAlarmSourceOverride> builder)
{
builder.HasKey(o => o.Id);
builder.Property(o => o.SourceCanonicalName)
.IsRequired()
.HasMaxLength(400); // Larger than names to fit composed paths.
builder.Property(o => o.ConnectionNameOverride)
.HasMaxLength(200);
builder.Property(o => o.SourceReferenceOverride)
.HasMaxLength(1000);
builder.Property(o => o.ConditionFilterOverride)
.HasMaxLength(1000);
builder.HasIndex(o => new { o.InstanceId, o.SourceCanonicalName }).IsUnique();
}
}
public class InstanceAttributeOverrideConfiguration : IEntityTypeConfiguration<InstanceAttributeOverride>
{
/// <summary>Configures the EF Core mapping for <see cref="InstanceAttributeOverride"/>.</summary>
@@ -58,6 +58,41 @@ public class TemplateConfiguration : IEntityTypeConfiguration<Template>
.WithOne()
.HasForeignKey(c => c.TemplateId)
.OnDelete(DeleteBehavior.Cascade);
builder.HasMany(t => t.NativeAlarmSources)
.WithOne()
.HasForeignKey(s => s.TemplateId)
.OnDelete(DeleteBehavior.Cascade);
}
}
public class TemplateNativeAlarmSourceConfiguration : IEntityTypeConfiguration<TemplateNativeAlarmSource>
{
/// <summary>Configures the EF Core mapping for <see cref="TemplateNativeAlarmSource"/>.</summary>
/// <param name="builder">The entity type builder.</param>
public void Configure(EntityTypeBuilder<TemplateNativeAlarmSource> builder)
{
builder.HasKey(s => s.Id);
builder.Property(s => s.Name)
.IsRequired()
.HasMaxLength(200);
builder.Property(s => s.Description)
.HasMaxLength(2000);
builder.Property(s => s.ConnectionName)
.IsRequired()
.HasMaxLength(200);
builder.Property(s => s.SourceReference)
.IsRequired()
.HasMaxLength(1000);
builder.Property(s => s.ConditionFilter)
.HasMaxLength(1000);
builder.HasIndex(s => new { s.TemplateId, s.Name }).IsUnique();
}
}