using Extrudex.Domain.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace Extrudex.Infrastructure.Data.Configurations; public class MaterialBaseConfiguration : BaseEntityConfiguration { public override void Configure(EntityTypeBuilder builder) { base.Configure(builder); builder.Property(e => e.Name) .HasColumnName("name") .IsRequired() .HasMaxLength(100); builder.Property(e => e.DensityGperCm3) .HasColumnName("density_g_per_cm3") .HasPrecision(10, 4) .IsRequired(); // Unique index on material base name builder.HasIndex(e => e.Name) .IsUnique() .HasDatabaseName("ix_material_bases_name"); // Relationships builder.HasMany(e => e.Finishes) .WithOne(e => e.MaterialBase) .HasForeignKey(e => e.MaterialBaseId) .HasConstraintName("fk_material_finishes_material_base"); builder.HasMany(e => e.Modifiers) .WithOne(e => e.MaterialBase) .HasForeignKey(e => e.MaterialBaseId) .HasConstraintName("fk_material_modifiers_material_base"); builder.HasMany(e => e.Spools) .WithOne(e => e.MaterialBase) .HasForeignKey(e => e.MaterialBaseId) .HasConstraintName("fk_spools_material_base"); } }