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 .Property(tg => tg.Status) .HasColumnName("status") .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))}')"); tg.HasCheckConstraint( "ck_" + $"{builder.Metadata.GetTableName()}_" + $"{builder.Property(tg => tg.Status) .Metadata.GetColumnName()}", $"{builder.Property(g => g.Status) .Metadata.GetColumnName()} IN ('{String .Join("', '", TicketStatus.Enumerations .Values.Select(v => v.Name))}')"); }); base.Configure(builder); builder .Property(tg => tg.PassangerFirstName) .HasColumnName("passanger_first_name") .HasColumnType("varchar(32)") .IsRequired(true); builder .Property(tg => tg.PassangerLastName) .HasColumnName("passanger_last_name") .HasColumnType("varchar(32)") .IsRequired(true); builder .Property(tg => tg.PassangerPatronymic) .HasColumnName("passanger_patronymic") .HasColumnType("varchar(32)") .IsRequired(true); builder .Property(tg => tg.PassangerBirthDate) .HasColumnName("passanger_birth_date") .HasColumnType("date") .IsRequired(true); builder .Property(tg => tg.PassangerEmail) .HasColumnName("passanger_email") .HasColumnType("varchar(256)") .IsRequired(false); builder .Property(tg => tg.PurchaseTime) .HasColumnName("purchase_time") .HasColumnType("timestamptz") .IsRequired(true); builder .Property(tg => tg.TravelTime) .HasColumnName("travel_time") .HasColumnType("interval") .IsRequired(true); } }