http-api/src/Persistence/PostgreSql/Configurations/EmployeeDocumentConfiguration.cs
2025-05-16 15:22:44 +03:00

64 lines
2.1 KiB
C#

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<EmployeeDocument>
{
public override void Configure(EntityTypeBuilder<EmployeeDocument> 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()}");
}
}