aboutsummaryrefslogtreecommitdiff
path: root/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration
diff options
context:
space:
mode:
Diffstat (limited to 'src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration')
-rw-r--r--src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/LinkedChildConfiguration.cs33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/LinkedChildConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/LinkedChildConfiguration.cs
new file mode 100644
index 0000000000..44bd01ad63
--- /dev/null
+++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/LinkedChildConfiguration.cs
@@ -0,0 +1,33 @@
+using Jellyfin.Database.Implementations.Entities;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+
+namespace Jellyfin.Database.Implementations.ModelConfiguration;
+
+/// <summary>
+/// LinkedChildEntity configuration.
+/// </summary>
+public class LinkedChildConfiguration : IEntityTypeConfiguration<LinkedChildEntity>
+{
+ /// <inheritdoc/>
+ public void Configure(EntityTypeBuilder<LinkedChildEntity> builder)
+ {
+ builder.ToTable("LinkedChildren");
+ builder.HasKey(e => new { e.ParentId, e.ChildId });
+ builder.HasIndex(e => e.ParentId);
+ builder.HasIndex(e => e.ChildId);
+ builder.HasIndex(e => new { e.ParentId, e.SortOrder });
+ builder.HasIndex(e => new { e.ParentId, e.ChildType });
+ builder.HasIndex(e => new { e.ChildId, e.ChildType });
+
+ builder.HasOne(e => e.Parent)
+ .WithMany(e => e.LinkedChildEntities)
+ .HasForeignKey(e => e.ParentId)
+ .OnDelete(DeleteBehavior.NoAction);
+
+ builder.HasOne(e => e.Child)
+ .WithMany(e => e.LinkedChildOfEntities)
+ .HasForeignKey(e => e.ChildId)
+ .OnDelete(DeleteBehavior.NoAction);
+ }
+}