using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; using SPMS.Domain.Entities; namespace SPMS.Infrastructure.Persistence.Configurations; public class MessageConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { builder.ToTable("Message"); builder.HasKey(e => e.Id); builder.Property(e => e.Id).ValueGeneratedOnAdd(); builder.Property(e => e.ServiceId).IsRequired(); builder.Property(e => e.MessageCode).HasMaxLength(10).IsRequired(); builder.HasIndex(e => e.MessageCode).IsUnique(); builder.Property(e => e.Title).HasMaxLength(100).IsRequired(); builder.Property(e => e.Body).HasMaxLength(500).IsRequired(); builder.Property(e => e.ImageUrl).HasMaxLength(500); builder.Property(e => e.LinkUrl).HasMaxLength(500); builder.Property(e => e.CustomData).HasColumnType("json"); builder.Property(e => e.CreatedAt).IsRequired(); builder.Property(e => e.CreatedBy).IsRequired(); builder.Property(e => e.IsDeleted).HasColumnType("tinyint(1)").IsRequired().HasDefaultValue(false); builder.Property(e => e.DeletedAt); builder.HasOne(e => e.Service) .WithMany(s => s.Messages) .HasForeignKey(e => e.ServiceId) .OnDelete(DeleteBehavior.Restrict); builder.HasOne(e => e.CreatedByAdmin) .WithMany() .HasForeignKey(e => e.CreatedBy) .OnDelete(DeleteBehavior.Restrict); builder.HasQueryFilter(e => !e.IsDeleted); } }