Files
TeleWave/backend/src/TeleWave.Infrastructure/Persistence/Configurations/ShowConfiguration.cs
T

35 lines
1.2 KiB
C#

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<Show>
{
public void Configure(EntityTypeBuilder<Show> 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<ShowEpisode>
{
public void Configure(EntityTypeBuilder<ShowEpisode> builder)
{
builder.HasIndex(x => new { x.ShowId, x.Position });
builder.HasIndex(x => x.MediaAssetId);
}
}