using HrynCo.NotificationService.DAL.EF.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace HrynCo.NotificationService.DAL.EF.Configurations; internal class EmailChannelEntityConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { builder.ToTable("providers"); builder.HasKey(x => x.Id); builder.Property(x => x.Id).HasColumnName("id"); builder.Property(x => x.ServiceName) .HasColumnName("service_name") .IsRequired() .HasMaxLength(100); builder.HasIndex(x => new { x.ServiceName, x.Priority }); builder.Property(x => x.Priority).HasColumnName("priority"); builder.Property(x => x.EmailChannelType).HasColumnName("provider_type"); builder.Property(x => x.SettingsJson) .HasColumnName("settings") .HasColumnType("jsonb") .IsRequired(); builder.Property(x => x.DailyLimit).HasColumnName("daily_limit"); builder.Property(x => x.MonthlyLimit).HasColumnName("monthly_limit"); builder.Property(x => x.WarnThresholdPercent).HasColumnName("warn_threshold_percent"); builder.Property(x => x.IsActive).HasColumnName("is_active"); builder.Property(x => x.Created).HasColumnName("created"); builder.Property(x => x.Updated).HasColumnName("updated"); } }