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 TicketGroupConfiguration : BaseConfiguration { public override void Configure(EntityTypeBuilder builder) { builder .Property(tg => tg.PassangerSex) .HasColumnName("passanger_sex") .IsRequired(true); builder .ToTable( "ticket_groups", tg => tg.HasCheckConstraint( "ck_" + $"{builder.Metadata.GetTableName()}_" + $"{builder.Property(tg => tg.PassangerSex) .Metadata.GetColumnName()}", $"{builder.Property(g => g.PassangerSex) .Metadata.GetColumnName()} IN ('{String .Join("', '", Sex.Enumerations .Values.Select(v => v.Name))}')")); base.Configure(builder); builder .Property(a => a.PassangerFirstName) .HasColumnName("passanger_first_name") .HasColumnType("varchar(32)") .IsRequired(true); builder .Property(a => a.PassangerLastName) .HasColumnName("passanger_last_name") .HasColumnType("varchar(32)") .IsRequired(true); builder .Property(a => a.PassangerPatronymic) .HasColumnName("passanger_patronymic") .HasColumnType("varchar(32)") .IsRequired(true); builder .Property(a => a.PassangerBirthDate) .HasColumnName("passanger_birth_date") .HasColumnType("date") .IsRequired(true); builder .Property(a => a.PurchaseTime) .HasColumnName("purchase_time") .HasColumnType("timestamptz") .IsRequired(true); builder .Property(a => a.Returned) .HasColumnName("returned") .HasColumnType("boolean") .IsRequired(true); builder .Property(a => a.TravelTime) .HasColumnName("travel_time") .HasColumnType("interval") .IsRequired(true); } }