using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; using SPMS.Domain.Entities; namespace SPMS.Infrastructure.Persistence.Configurations; public class PushSendLogConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { builder.ToTable("PushSendLog"); builder.HasKey(e => e.Id); builder.Property(e => e.Id).ValueGeneratedOnAdd(); builder.Property(e => e.ServiceId).IsRequired(); builder.Property(e => e.MessageId).IsRequired(); builder.Property(e => e.DeviceId).IsRequired(); builder.Property(e => e.Status).HasColumnType("tinyint").IsRequired(); builder.Property(e => e.FailReason).HasMaxLength(200); builder.Property(e => e.SentAt).IsRequired(); builder.HasOne(e => e.Service) .WithMany() .HasForeignKey(e => e.ServiceId) .OnDelete(DeleteBehavior.Restrict); builder.HasOne(e => e.Message) .WithMany() .HasForeignKey(e => e.MessageId) .OnDelete(DeleteBehavior.Restrict); builder.HasOne(e => e.Device) .WithMany() .HasForeignKey(e => e.DeviceId) .OnDelete(DeleteBehavior.Restrict); builder.HasIndex(e => new { e.ServiceId, e.SentAt }); builder.HasIndex(e => e.MessageId); } }