feat(db): map TemplateFolder entity and Template.FolderId

This commit is contained in:
Joseph Doherty
2026-05-11 10:34:25 -04:00
parent 1d27ec3b85
commit e0b098d200
2 changed files with 28 additions and 0 deletions

View File

@@ -26,6 +26,12 @@ public class TemplateConfiguration : IEntityTypeConfiguration<Template>
.OnDelete(DeleteBehavior.Restrict)
.IsRequired(false);
builder.HasOne<TemplateFolder>()
.WithMany()
.HasForeignKey(t => t.FolderId)
.OnDelete(DeleteBehavior.Restrict)
.IsRequired(false);
builder.HasMany(t => t.Attributes)
.WithOne()
.HasForeignKey(a => a.TemplateId)
@@ -147,3 +153,24 @@ public class TemplateCompositionConfiguration : IEntityTypeConfiguration<Templat
builder.HasIndex(c => new { c.TemplateId, c.InstanceName }).IsUnique();
}
}
public class TemplateFolderConfiguration : IEntityTypeConfiguration<TemplateFolder>
{
public void Configure(EntityTypeBuilder<TemplateFolder> builder)
{
builder.HasKey(f => f.Id);
builder.Property(f => f.Name)
.IsRequired()
.HasMaxLength(200);
builder.HasOne<TemplateFolder>()
.WithMany()
.HasForeignKey(f => f.ParentFolderId)
.OnDelete(DeleteBehavior.Restrict)
.IsRequired(false);
// Unique sibling name (case-insensitive enforced at service layer; this index is for fast lookup)
builder.HasIndex(f => new { f.ParentFolderId, f.Name }).IsUnique();
}
}

View File

@@ -25,6 +25,7 @@ public class ScadaLinkDbContext : DbContext, IDataProtectionKeyContext
public DbSet<TemplateAlarm> TemplateAlarms => Set<TemplateAlarm>();
public DbSet<TemplateScript> TemplateScripts => Set<TemplateScript>();
public DbSet<TemplateComposition> TemplateCompositions => Set<TemplateComposition>();
public DbSet<TemplateFolder> TemplateFolders => Set<TemplateFolder>();
// Instances
public DbSet<Instance> Instances => Set<Instance>();