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 EmployeeDocumentConfiguration : BaseConfiguration { public override void Configure(EntityTypeBuilder builder) { builder .Property(ed => ed.DocumentType) .HasColumnName("document_type") .IsRequired(true); builder .ToTable( "employee_documents", ed => ed.HasCheckConstraint( "ck_" + $"{builder.Metadata.GetTableName()}_" + $"{builder.Property(ed => ed.DocumentType) .Metadata.GetColumnName()}", $"{builder.Property(ed => ed.DocumentType) .Metadata.GetColumnName()} IN ('{String .Join("', '", DocumentType.Enumerations .Values.Select(v => v.Name))}')")); base.Configure(builder); builder .Property(ed => ed.Information) .HasColumnName("information") .HasColumnType("varchar(256)") .IsRequired(true); builder .Property(ed => ed.EmployeeId) .HasColumnName("employee_id") .HasColumnType("bigint") .IsRequired(true); builder .HasOne(ed => ed.Employee) .WithMany(ed => ed.Documents) .HasForeignKey(ed => ed.EmployeeId) .HasConstraintName( "fk_" + $"{builder.Metadata.GetTableName()}_" + $"{builder.Property(ed => ed.EmployeeId).Metadata.GetColumnName()}") .OnDelete(DeleteBehavior.Cascade); builder .HasIndex(ed => ed.EmployeeId) .HasDatabaseName( "ix_" + $"{builder.Metadata.GetTableName()}_" + $"{builder.Property(ed => ed.EmployeeId).Metadata.GetColumnName()}"); } }