Optimize internal querying of UserData, other fixes (#14795)

This commit is contained in:
JPVenson
2025-09-16 21:08:04 +02:00
committed by GitHub
parent 2618a5fba2
commit a0b3e2b071
20 changed files with 1988 additions and 92 deletions

View File

@@ -146,6 +146,8 @@ public class BaseItemEntity
public Guid? ParentId { get; set; }
public BaseItemEntity? DirectParent { get; set; }
public Guid? TopParentId { get; set; }
public Guid? SeasonId { get; set; }
@@ -168,6 +170,8 @@ public class BaseItemEntity
public ICollection<AncestorId>? Children { get; set; }
public ICollection<BaseItemEntity>? DirectChildren { get; set; }
public ICollection<BaseItemMetadataField>? LockedFields { get; set; }
public ICollection<BaseItemTrailerType>? TrailerTypes { get; set; }

View File

@@ -27,6 +27,7 @@ public class BaseItemConfiguration : IEntityTypeConfiguration<BaseItemEntity>
builder.HasMany(e => e.Provider);
builder.HasMany(e => e.Parents);
builder.HasMany(e => e.Children);
builder.HasMany(e => e.DirectChildren).WithOne(e => e.DirectParent).HasForeignKey(e => e.ParentId).OnDelete(DeleteBehavior.Cascade);
builder.HasMany(e => e.LockedFields);
builder.HasMany(e => e.TrailerTypes);
builder.HasMany(e => e.Images);

View File

@@ -0,0 +1,30 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Jellyfin.Server.Implementations.Migrations
{
/// <inheritdoc />
public partial class AddProperParentChildRelationBaseItemWithCascade : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddForeignKey(
name: "FK_BaseItems_BaseItems_ParentId",
table: "BaseItems",
column: "ParentId",
principalTable: "BaseItems",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_BaseItems_BaseItems_ParentId",
table: "BaseItems");
}
}
}

View File

@@ -15,7 +15,7 @@ namespace Jellyfin.Server.Implementations.Migrations
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder.HasAnnotation("ProductVersion", "9.0.7");
modelBuilder.HasAnnotation("ProductVersion", "9.0.9");
modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.AccessSchedule", b =>
{
@@ -1450,6 +1450,16 @@ namespace Jellyfin.Server.Implementations.Migrations
b.Navigation("Item");
});
modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemEntity", b =>
{
b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "DirectParent")
.WithMany("DirectChildren")
.HasForeignKey("ParentId")
.OnDelete(DeleteBehavior.Cascade);
b.Navigation("DirectParent");
});
modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemImageInfo", b =>
{
b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
@@ -1652,6 +1662,8 @@ namespace Jellyfin.Server.Implementations.Migrations
b.Navigation("Children");
b.Navigation("DirectChildren");
b.Navigation("Images");
b.Navigation("ItemValues");