using cuqmbr.TravelGuide.Domain.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace cuqmbr.TravelGuide.Persistence.PostgreSql.Configurations; public class RouteAddressConfiguration : BaseConfiguration { public override void Configure(EntityTypeBuilder builder) { builder .ToTable("route_addresses"); base.Configure(builder); builder .Property(ra => ra.Order) .HasColumnName("order") .HasColumnType("smallint") .IsRequired(true); builder .Property(ra => ra.AddressId) .HasColumnName("address_id") .HasColumnType("bigint") .IsRequired(true); builder .HasOne(ra => ra.Address) .WithMany(a => a.AddressRoutes) .HasForeignKey(ra => ra.AddressId) .HasConstraintName( "fk_" + $"{builder.Metadata.GetTableName()}_" + $"{builder.Property(ra => ra.AddressId).Metadata.GetColumnName()}") .OnDelete(DeleteBehavior.Cascade); builder .HasIndex(ra => ra.AddressId) .HasDatabaseName( "ix_" + $"{builder.Metadata.GetTableName()}_" + $"{builder.Property(ra => ra.AddressId).Metadata.GetColumnName()}") .IsUnique(); builder .Property(ra => ra.RouteId) .HasColumnName("route_id") .HasColumnType("bigint") .IsRequired(true); builder .HasOne(ra => ra.Route) .WithMany(a => a.RouteAddresses) .HasForeignKey(ra => ra.RouteId) .HasConstraintName( "fk_" + $"{builder.Metadata.GetTableName()}_" + $"{builder.Property(ra => ra.RouteId).Metadata.GetColumnName()}") .OnDelete(DeleteBehavior.Cascade); builder .HasIndex(ra => ra.RouteId) .HasDatabaseName( "ix_" + $"{builder.Metadata.GetTableName()}_" + $"{builder.Property(ra => ra.RouteId).Metadata.GetColumnName()}") .IsUnique(); builder .HasAlternateKey(ra => new { ra.AddressId, ra.RouteId, ra.Order }) .HasName( "altk_" + $"{builder.Metadata.GetTableName()}_" + $"{builder.Property(ra => ra.AddressId).Metadata.GetColumnName()}_" + $"{builder.Property(ra => ra.RouteId).Metadata.GetColumnName()}_" + $"{builder.Property(ra => ra.Order).Metadata.GetColumnName()}"); } }