Loading src/infrastructure/Contexts/ApplicationDbContext.cs +10 −0 Original line number Diff line number Diff line using Cals.Visor.Models; using Cals.Visor.Models.Identity; using Microsoft.EntityFrameworkCore; Loading @@ -13,6 +14,15 @@ public class ApplicationDbContext : DbContext } public DbSet<AppUser> Users => Set<AppUser>(); public DbSet<Person> People => Set<Person>(); public DbSet<PaloAltoFirewall> Firewalls => Set<PaloAltoFirewall>(); public DbSet<Subnet> Subnets => Set<Subnet>(); public DbSet<WiscNicArea> Areas => Set<WiscNicArea>(); public DbSet<PaloAltoAccessDomain> AccessDomains => Set<PaloAltoAccessDomain>(); public DbSet<Vlan> Vlans => Set<Vlan>(); public DbSet<PaloAltoVsys> Vsyses => Set<PaloAltoVsys>(); public DbSet<WiscNicGroup> WiscNicGroups => Set<WiscNicGroup>(); public DbSet<WiscNicGroupMembershipType> WiscNicGroupMembershipTypes => Set<WiscNicGroupMembershipType>(); protected override void OnModelCreating(ModelBuilder modelBuilder) { Loading src/infrastructure/Database/TableNames.cs +13 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,19 @@ internal sealed class TableNames internal const string Users = "appuser"; internal const string OutboxMessages = "outbox"; internal const string InternalCommands = "internal_command"; internal const string PaloAltoAccessDomains = "pa_access_domains"; internal const string WiscNicAreas = "wn_areas"; internal const string PaloAltoFirewalls = "pa_firewalls"; internal const string PaloAltoFirewallVlans = "pa_firewalls_vlans"; internal const string Locations = "locations"; internal const string LocationVlans = "locations_vlans"; internal const string People = "people"; internal const string Subnets = "subnets"; internal const string Vlans = "vlans"; internal const string PaloAltoVsyses = "pa_vsyses"; internal const string WiscNicGroupMembers = "wn_group_members"; internal const string WiscNicGroupMembershipTypes = "wn_group_membership_types"; internal const string WiscNicGroups = "wn_groups"; #pragma warning restore IDE1006 // Naming Styles } src/infrastructure/Models/LocationEntityTypeConfiguration.cs 0 → 100644 +57 −0 Original line number Diff line number Diff line using Cals.Visor.Infrastructure.Database; using Cals.Visor.Models; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace Cals.Visor.Infrastructure.Models; public class LocationEntityTypeConfiguration : IEntityTypeConfiguration<Location> { public void Configure(EntityTypeBuilder<Location> builder) { builder.ToTable(TableNames.Locations); builder.HasKey(e => e.LocationId); builder .Property(e => e.Name) .HasMaxLength(100); builder .Property(e => e.Description) .HasColumnName("descr") .HasMaxLength(255); // Configure many-to-many: Location ↔ Vlan builder .HasMany(l => l.Vlans) .WithMany() // You can add .WithMany(v => v.Locations) if you add a Locations collection to Vlan .UsingEntity<Dictionary<string, object>>( "locations_vlans", j => j .HasOne<Vlan>() .WithMany() .HasForeignKey("vlan_id"), j => j .HasOne<Location>() .WithMany() .HasForeignKey("location_id"), j => { j.ToTable(TableNames.LocationVlans); j.HasKey("location_vlan_id"); j.Property<long>("location_vlan_id") .HasColumnName("location_vlan_id"); j.Property<long>("location_id") .HasColumnName("location_id"); j.Property<long>("vlan_id") .HasColumnName("vlan_id"); } ); } } src/infrastructure/Models/PaloAltoAccessDomainEntityTypeConfiguration.cs 0 → 100644 +26 −0 Original line number Diff line number Diff line using Cals.Visor.Infrastructure.Database; using Cals.Visor.Models; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace Cals.Visor.Infrastructure.Models; public class PaloAltoAccessDomainEntityTypeConfiguration : IEntityTypeConfiguration<PaloAltoAccessDomain> { public void Configure(EntityTypeBuilder<PaloAltoAccessDomain> builder) { builder.ToTable(TableNames.PaloAltoAccessDomains); builder.HasKey(e => e.AccessDomainId); builder.Property(e => e.Name) .HasMaxLength(100); builder.Property(e => e.ManifestUuid) .HasMaxLength(100); builder.Property(e => e.ManifestPath) .HasMaxLength(500); } } src/infrastructure/Models/PaloAltoFirewallEntityTypeConfiguration.cs 0 → 100644 +21 −0 Original line number Diff line number Diff line using Cals.Visor.Infrastructure.Database; using Cals.Visor.Models; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace Cals.Visor.Infrastructure.Models; public class PaloAltoFirewallEntityTypeConfiguration : IEntityTypeConfiguration<PaloAltoFirewall> { public void Configure(EntityTypeBuilder<PaloAltoFirewall> builder) { builder.ToTable(TableNames.PaloAltoFirewalls); builder.HasKey(e => e.FirewallId); builder.Property(e => e.Name) .HasMaxLength(100); } } Loading
src/infrastructure/Contexts/ApplicationDbContext.cs +10 −0 Original line number Diff line number Diff line using Cals.Visor.Models; using Cals.Visor.Models.Identity; using Microsoft.EntityFrameworkCore; Loading @@ -13,6 +14,15 @@ public class ApplicationDbContext : DbContext } public DbSet<AppUser> Users => Set<AppUser>(); public DbSet<Person> People => Set<Person>(); public DbSet<PaloAltoFirewall> Firewalls => Set<PaloAltoFirewall>(); public DbSet<Subnet> Subnets => Set<Subnet>(); public DbSet<WiscNicArea> Areas => Set<WiscNicArea>(); public DbSet<PaloAltoAccessDomain> AccessDomains => Set<PaloAltoAccessDomain>(); public DbSet<Vlan> Vlans => Set<Vlan>(); public DbSet<PaloAltoVsys> Vsyses => Set<PaloAltoVsys>(); public DbSet<WiscNicGroup> WiscNicGroups => Set<WiscNicGroup>(); public DbSet<WiscNicGroupMembershipType> WiscNicGroupMembershipTypes => Set<WiscNicGroupMembershipType>(); protected override void OnModelCreating(ModelBuilder modelBuilder) { Loading
src/infrastructure/Database/TableNames.cs +13 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,19 @@ internal sealed class TableNames internal const string Users = "appuser"; internal const string OutboxMessages = "outbox"; internal const string InternalCommands = "internal_command"; internal const string PaloAltoAccessDomains = "pa_access_domains"; internal const string WiscNicAreas = "wn_areas"; internal const string PaloAltoFirewalls = "pa_firewalls"; internal const string PaloAltoFirewallVlans = "pa_firewalls_vlans"; internal const string Locations = "locations"; internal const string LocationVlans = "locations_vlans"; internal const string People = "people"; internal const string Subnets = "subnets"; internal const string Vlans = "vlans"; internal const string PaloAltoVsyses = "pa_vsyses"; internal const string WiscNicGroupMembers = "wn_group_members"; internal const string WiscNicGroupMembershipTypes = "wn_group_membership_types"; internal const string WiscNicGroups = "wn_groups"; #pragma warning restore IDE1006 // Naming Styles }
src/infrastructure/Models/LocationEntityTypeConfiguration.cs 0 → 100644 +57 −0 Original line number Diff line number Diff line using Cals.Visor.Infrastructure.Database; using Cals.Visor.Models; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace Cals.Visor.Infrastructure.Models; public class LocationEntityTypeConfiguration : IEntityTypeConfiguration<Location> { public void Configure(EntityTypeBuilder<Location> builder) { builder.ToTable(TableNames.Locations); builder.HasKey(e => e.LocationId); builder .Property(e => e.Name) .HasMaxLength(100); builder .Property(e => e.Description) .HasColumnName("descr") .HasMaxLength(255); // Configure many-to-many: Location ↔ Vlan builder .HasMany(l => l.Vlans) .WithMany() // You can add .WithMany(v => v.Locations) if you add a Locations collection to Vlan .UsingEntity<Dictionary<string, object>>( "locations_vlans", j => j .HasOne<Vlan>() .WithMany() .HasForeignKey("vlan_id"), j => j .HasOne<Location>() .WithMany() .HasForeignKey("location_id"), j => { j.ToTable(TableNames.LocationVlans); j.HasKey("location_vlan_id"); j.Property<long>("location_vlan_id") .HasColumnName("location_vlan_id"); j.Property<long>("location_id") .HasColumnName("location_id"); j.Property<long>("vlan_id") .HasColumnName("vlan_id"); } ); } }
src/infrastructure/Models/PaloAltoAccessDomainEntityTypeConfiguration.cs 0 → 100644 +26 −0 Original line number Diff line number Diff line using Cals.Visor.Infrastructure.Database; using Cals.Visor.Models; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace Cals.Visor.Infrastructure.Models; public class PaloAltoAccessDomainEntityTypeConfiguration : IEntityTypeConfiguration<PaloAltoAccessDomain> { public void Configure(EntityTypeBuilder<PaloAltoAccessDomain> builder) { builder.ToTable(TableNames.PaloAltoAccessDomains); builder.HasKey(e => e.AccessDomainId); builder.Property(e => e.Name) .HasMaxLength(100); builder.Property(e => e.ManifestUuid) .HasMaxLength(100); builder.Property(e => e.ManifestPath) .HasMaxLength(500); } }
src/infrastructure/Models/PaloAltoFirewallEntityTypeConfiguration.cs 0 → 100644 +21 −0 Original line number Diff line number Diff line using Cals.Visor.Infrastructure.Database; using Cals.Visor.Models; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace Cals.Visor.Infrastructure.Models; public class PaloAltoFirewallEntityTypeConfiguration : IEntityTypeConfiguration<PaloAltoFirewall> { public void Configure(EntityTypeBuilder<PaloAltoFirewall> builder) { builder.ToTable(TableNames.PaloAltoFirewalls); builder.HasKey(e => e.FirewallId); builder.Property(e => e.Name) .HasMaxLength(100); } }