Remove ExtraIds column and use OwnerId relationship for extras

- Remove ExtraIds property from BaseItemEntity and BaseItem
- Update RefreshExtras to query via OwnerId instead of cached ExtraIds
- Update GetExtras methods to query database via OwnerIds filter
- Add OwnerIds and ExtraTypes filter support to InternalItemsQuery
- Add filter handling in BaseItemRepository for new query options
- Update HasSpecialFeature/HasTrailer filters to use Extras relationship
- Add CleanupOrphanedExtras migration routine
- Add database migration to drop ExtraIds column
This commit is contained in:
Shadowghost
2026-01-17 15:11:45 +01:00
parent 139d23ddc2
commit c350fd0f40
9 changed files with 1990 additions and 32 deletions

View File

@@ -118,8 +118,6 @@ public class BaseItemEntity
public string? ProductionLocations { get; set; }
public string? ExtraIds { get; set; }
public int? TotalBitrate { get; set; }
public BaseItemExtraType? ExtraType { get; set; }

View File

@@ -0,0 +1,36 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Jellyfin.Database.Providers.Sqlite.Migrations
{
/// <inheritdoc />
public partial class DropExtraIdsColumn : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "ExtraIds",
table: "BaseItems");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "ExtraIds",
table: "BaseItems",
type: "TEXT",
nullable: true);
migrationBuilder.UpdateData(
table: "BaseItems",
keyColumn: "Id",
keyValue: new Guid("00000000-0000-0000-0000-000000000001"),
column: "ExtraIds",
value: null);
}
}
}

View File

@@ -207,9 +207,6 @@ namespace Jellyfin.Server.Implementations.Migrations
b.Property<string>("ExternalServiceId")
.HasColumnType("TEXT");
b.Property<string>("ExtraIds")
.HasColumnType("TEXT");
b.Property<int?>("ExtraType")
.HasColumnType("INTEGER");