using CMSMicroservice.Domain.Entities.DiscountShop;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;

namespace CMSMicroservice.Infrastructure.Persistence.Configurations.DiscountShop;

public class DiscountProductImageConfiguration : IEntityTypeConfiguration<DiscountProductImage>
{
    public void Configure(EntityTypeBuilder<DiscountProductImage> builder)
    {
        builder.ToTable("DiscountProductImages");
        
        builder.HasKey(x => x.Id);
        
        builder.Property(x => x.Title)
            .HasMaxLength(200);
            
        builder.Property(x => x.AltText)
            .HasMaxLength(500);
            
        builder.Property(x => x.ImagePath)
            .IsRequired();
            
        builder.Property(x => x.ThumbnailPath);
            
        builder.HasOne(x => x.DiscountProduct)
            .WithMany(p => p.Images)
            .HasForeignKey(x => x.DiscountProductId)
            .OnDelete(DeleteBehavior.Cascade);
            
        builder.HasIndex(x => x.DiscountProductId);
        builder.HasIndex(x => new { x.DiscountProductId, x.SortOrder });
    }
}
