From c2844bda3b7605257d7b2f8d146077cea6dd0b08 Mon Sep 17 00:00:00 2001
From: JPVenson <6794763+JPVenson@users.noreply.github.com>
Date: Wed, 9 Oct 2024 11:22:52 +0000
Subject: Added EF BaseItem migration
---
.../AttachmentStreamInfoConfiguration.cs | 17 +++++++++++++++++
.../ModelConfiguration/BaseItemConfiguration.cs | 9 +++++----
.../ModelConfiguration/ChapterConfiguration.cs | 4 ++--
.../ModelConfiguration/ItemValuesConfiguration.cs | 3 +--
.../MediaStreamInfoConfiguration.cs | 22 ++++++++++++++++++++++
.../ModelConfiguration/PeopleConfiguration.cs | 2 +-
.../ModelConfiguration/UserDataConfiguration.cs | 3 +--
7 files changed, 49 insertions(+), 11 deletions(-)
create mode 100644 Jellyfin.Server.Implementations/ModelConfiguration/AttachmentStreamInfoConfiguration.cs
create mode 100644 Jellyfin.Server.Implementations/ModelConfiguration/MediaStreamInfoConfiguration.cs
(limited to 'Jellyfin.Server.Implementations/ModelConfiguration')
diff --git a/Jellyfin.Server.Implementations/ModelConfiguration/AttachmentStreamInfoConfiguration.cs b/Jellyfin.Server.Implementations/ModelConfiguration/AttachmentStreamInfoConfiguration.cs
new file mode 100644
index 0000000000..057b6689ac
--- /dev/null
+++ b/Jellyfin.Server.Implementations/ModelConfiguration/AttachmentStreamInfoConfiguration.cs
@@ -0,0 +1,17 @@
+using Jellyfin.Data.Entities;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+
+namespace Jellyfin.Server.Implementations.ModelConfiguration;
+
+///
+/// FluentAPI configuration for the AttachmentStreamInfo entity.
+///
+public class AttachmentStreamInfoConfiguration : IEntityTypeConfiguration
+{
+ ///
+ public void Configure(EntityTypeBuilder builder)
+ {
+ builder.HasKey(e => new { e.ItemId, e.Index });
+ }
+}
diff --git a/Jellyfin.Server.Implementations/ModelConfiguration/BaseItemConfiguration.cs b/Jellyfin.Server.Implementations/ModelConfiguration/BaseItemConfiguration.cs
index 6f8adb44d9..d74b947840 100644
--- a/Jellyfin.Server.Implementations/ModelConfiguration/BaseItemConfiguration.cs
+++ b/Jellyfin.Server.Implementations/ModelConfiguration/BaseItemConfiguration.cs
@@ -2,6 +2,7 @@ using System;
using Jellyfin.Data.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using SQLitePCL;
namespace Jellyfin.Server.Implementations.ModelConfiguration;
@@ -14,10 +15,10 @@ public class BaseItemConfiguration : IEntityTypeConfiguration
public void Configure(EntityTypeBuilder builder)
{
builder.HasKey(e => e.Id);
- builder.HasOne(e => e.Parent);
- builder.HasOne(e => e.TopParent);
- builder.HasOne(e => e.Season);
- builder.HasOne(e => e.Series);
+ builder.HasOne(e => e.Parent).WithMany(e => e.DirectChildren).HasForeignKey(e => e.ParentId);
+ builder.HasOne(e => e.TopParent).WithMany(e => e.AllChildren).HasForeignKey(e => e.TopParentId);
+ builder.HasOne(e => e.Season).WithMany(e => e.SeasonEpisodes).HasForeignKey(e => e.SeasonId);
+ builder.HasOne(e => e.Series).WithMany(e => e.SeriesEpisodes).HasForeignKey(e => e.SeriesId);
builder.HasMany(e => e.Peoples);
builder.HasMany(e => e.UserData);
builder.HasMany(e => e.ItemValues);
diff --git a/Jellyfin.Server.Implementations/ModelConfiguration/ChapterConfiguration.cs b/Jellyfin.Server.Implementations/ModelConfiguration/ChapterConfiguration.cs
index 464fbfb014..5a84f7750a 100644
--- a/Jellyfin.Server.Implementations/ModelConfiguration/ChapterConfiguration.cs
+++ b/Jellyfin.Server.Implementations/ModelConfiguration/ChapterConfiguration.cs
@@ -13,7 +13,7 @@ public class ChapterConfiguration : IEntityTypeConfiguration
///
public void Configure(EntityTypeBuilder builder)
{
- builder.HasNoKey();
- builder.HasIndex(e => new { e.ItemId, e.ChapterIndex });
+ builder.HasKey(e => new { e.ItemId, e.ChapterIndex });
+ builder.HasOne(e => e.Item);
}
}
diff --git a/Jellyfin.Server.Implementations/ModelConfiguration/ItemValuesConfiguration.cs b/Jellyfin.Server.Implementations/ModelConfiguration/ItemValuesConfiguration.cs
index a7de6ec327..c39854f5ac 100644
--- a/Jellyfin.Server.Implementations/ModelConfiguration/ItemValuesConfiguration.cs
+++ b/Jellyfin.Server.Implementations/ModelConfiguration/ItemValuesConfiguration.cs
@@ -13,8 +13,7 @@ public class ItemValuesConfiguration : IEntityTypeConfiguration
///
public void Configure(EntityTypeBuilder builder)
{
- builder.HasNoKey();
+ builder.HasKey(e => new { e.ItemId, e.Type, e.Value });
builder.HasIndex(e => new { e.ItemId, e.Type, e.CleanValue });
- builder.HasIndex(e => new { e.ItemId, e.Type, e.Value });
}
}
diff --git a/Jellyfin.Server.Implementations/ModelConfiguration/MediaStreamInfoConfiguration.cs b/Jellyfin.Server.Implementations/ModelConfiguration/MediaStreamInfoConfiguration.cs
new file mode 100644
index 0000000000..7e572f9a39
--- /dev/null
+++ b/Jellyfin.Server.Implementations/ModelConfiguration/MediaStreamInfoConfiguration.cs
@@ -0,0 +1,22 @@
+using System;
+using Jellyfin.Data.Entities;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+
+namespace Jellyfin.Server.Implementations.ModelConfiguration;
+
+///
+/// People configuration.
+///
+public class MediaStreamInfoConfiguration : IEntityTypeConfiguration
+{
+ ///
+ public void Configure(EntityTypeBuilder builder)
+ {
+ builder.HasKey(e => new { e.ItemId, e.StreamIndex });
+ builder.HasIndex(e => e.StreamIndex);
+ builder.HasIndex(e => e.StreamType);
+ builder.HasIndex(e => new { e.StreamIndex, e.StreamType });
+ builder.HasIndex(e => new { e.StreamIndex, e.StreamType, e.Language });
+ }
+}
diff --git a/Jellyfin.Server.Implementations/ModelConfiguration/PeopleConfiguration.cs b/Jellyfin.Server.Implementations/ModelConfiguration/PeopleConfiguration.cs
index f6cd39c248..5f5b4dfc74 100644
--- a/Jellyfin.Server.Implementations/ModelConfiguration/PeopleConfiguration.cs
+++ b/Jellyfin.Server.Implementations/ModelConfiguration/PeopleConfiguration.cs
@@ -13,7 +13,7 @@ public class PeopleConfiguration : IEntityTypeConfiguration
///
public void Configure(EntityTypeBuilder builder)
{
- builder.HasNoKey();
+ builder.HasKey(e => new { e.ItemId, e.Role, e.ListOrder });
builder.HasIndex(e => new { e.ItemId, e.ListOrder });
builder.HasIndex(e => e.Name);
}
diff --git a/Jellyfin.Server.Implementations/ModelConfiguration/UserDataConfiguration.cs b/Jellyfin.Server.Implementations/ModelConfiguration/UserDataConfiguration.cs
index 8e64844378..1113adb7bc 100644
--- a/Jellyfin.Server.Implementations/ModelConfiguration/UserDataConfiguration.cs
+++ b/Jellyfin.Server.Implementations/ModelConfiguration/UserDataConfiguration.cs
@@ -13,8 +13,7 @@ public class UserDataConfiguration : IEntityTypeConfiguration
///
public void Configure(EntityTypeBuilder builder)
{
- builder.HasNoKey();
- builder.HasIndex(d => new { d.Key, d.UserId }).IsUnique();
+ builder.HasKey(d => new { d.Key, d.UserId });
builder.HasIndex(d => new { d.Key, d.UserId, d.Played });
builder.HasIndex(d => new { d.Key, d.UserId, d.PlaybackPositionTicks });
builder.HasIndex(d => new { d.Key, d.UserId, d.IsFavorite });
--
cgit v1.2.3