using cuqmbr.TravelGuide.Domain.Entities; using cuqmbr.TravelGuide.Domain.Enums; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace cuqmbr.TravelGuide.Persistence.PostgreSql.Configurations; public class TicketConfiguration : BaseConfiguration { public override void Configure(EntityTypeBuilder builder) { builder .Property(t => t.Currency) .HasColumnName("currency") .IsRequired(true); builder .ToTable( "tickets", ve => ve.HasCheckConstraint( "ck_" + $"{builder.Metadata.GetTableName()}_" + $"{builder.Property(ve => ve.Currency) .Metadata.GetColumnName()}", $"{builder.Property(ve => ve.Currency) .Metadata.GetColumnName()} IN ('{String .Join("', '", Currency.Enumerations .Values.Select(v => v.Name))}')")); base.Configure(builder); builder .Property(t => t.DepartureRouteAddressId) .HasColumnName("departure_route_address_id") .HasColumnType("bigint") .IsRequired(true); builder .Property(t => t.ArrivalRouteAddressId) .HasColumnName("arrival_route_address_id") .HasColumnType("bigint") .IsRequired(true); builder .Property(t => t.Order) .HasColumnName("order") .HasColumnType("smallint") .IsRequired(true); builder .Property(t => t.Cost) .HasColumnName("cost") .HasColumnType("numeric(24,12)") .IsRequired(true); builder .Property(t => t.TicketGroupId) .HasColumnName("ticket_group_id") .HasColumnType("bigint") .IsRequired(true); builder .HasOne(t => t.TicketGroup) .WithMany(tg => tg.Tickets) .HasForeignKey(t => t.TicketGroupId) .HasConstraintName( "fk_" + $"{builder.Metadata.GetTableName()}_" + $"{builder.Property(t => t.TicketGroupId).Metadata.GetColumnName()}") .OnDelete(DeleteBehavior.Cascade); builder .HasIndex(t => t.TicketGroupId) .HasDatabaseName( "ix_" + $"{builder.Metadata.GetTableName()}_" + $"{builder.Property(t => t.TicketGroupId).Metadata.GetColumnName()}"); builder .Property(t => t.VehicleEnrollmentId) .HasColumnName("vehicle_enrollment_id") .HasColumnType("bigint") .IsRequired(true); builder .HasOne(t => t.VehicleEnrollment) .WithMany(ve => ve.Tickets) .HasForeignKey(t => t.VehicleEnrollmentId) .HasConstraintName( "fk_" + $"{builder.Metadata.GetTableName()}_" + $"{builder.Property(t => t.VehicleEnrollmentId).Metadata.GetColumnName()}") .OnDelete(DeleteBehavior.Cascade); builder .HasIndex(t => t.VehicleEnrollmentId) .HasDatabaseName( "ix_" + $"{builder.Metadata.GetTableName()}_" + $"{builder.Property(t => t.VehicleEnrollmentId).Metadata.GetColumnName()}"); } }