using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata.Builders; using TeleWave.Domain.Library; namespace TeleWave.Infrastructure.Persistence.Configurations; public class ShowConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { builder.Property(x => x.Name).IsRequired().HasMaxLength(256); builder.Property(x => x.Description).HasMaxLength(2048); builder.Property(x => x.MetadataProvider).HasMaxLength(16); builder.Property(x => x.MetadataExternalId).HasMaxLength(64); builder.Property(x => x.PosterPath).HasMaxLength(256); builder .HasMany(x => x.Episodes) .WithOne() .HasForeignKey(e => e.ShowId) .OnDelete(DeleteBehavior.Cascade); builder.Navigation(x => x.Episodes).UsePropertyAccessMode(PropertyAccessMode.Field); } } public class ShowEpisodeConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { builder.HasIndex(x => new { x.ShowId, x.Position }); builder.HasIndex(x => x.MediaAssetId); } }