瀏覽代碼

Aggregated Migrations

JPVenson 7 月之前
父節點
當前提交
5e922f1c10

+ 0 - 1445
Jellyfin.Server.Implementations/Migrations/20241009132112_BaseItemRefactor.Designer.cs

@@ -1,1445 +0,0 @@
-// <auto-generated />
-using System;
-using Jellyfin.Server.Implementations;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-
-#nullable disable
-
-namespace Jellyfin.Server.Implementations.Migrations
-{
-    [DbContext(typeof(JellyfinDbContext))]
-    [Migration("20241009132112_BaseItemRefactor")]
-    partial class BaseItemRefactor
-    {
-        /// <inheritdoc />
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder.HasAnnotation("ProductVersion", "8.0.8");
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AccessSchedule", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DayOfWeek")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<double>("EndHour")
-                        .HasColumnType("REAL");
-
-                    b.Property<double>("StartHour")
-                        .HasColumnType("REAL");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AccessSchedules");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ActivityLog", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<DateTime>("DateCreated")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ItemId")
-                        .HasMaxLength(256)
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("LogSeverity")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasMaxLength(512)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Overview")
-                        .HasMaxLength(512)
-                        .HasColumnType("TEXT");
-
-                    b.Property<uint>("RowVersion")
-                        .IsConcurrencyToken()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("ShortOverview")
-                        .HasMaxLength(512)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Type")
-                        .IsRequired()
-                        .HasMaxLength(256)
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DateCreated");
-
-                    b.ToTable("ActivityLogs");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AncestorId", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("Id")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AncestorIdText")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("ItemId", "Id");
-
-                    b.HasIndex("Id");
-
-                    b.HasIndex("ItemId", "AncestorIdText");
-
-                    b.ToTable("AncestorIds");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AttachmentStreamInfo", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Index")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Codec")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CodecTag")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Comment")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Filename")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("MimeType")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("ItemId", "Index");
-
-                    b.ToTable("AttachmentStreamInfos");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemEntity", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Album")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AlbumArtists")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Artists")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Audio")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ChannelId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CleanName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<float?>("CommunityRating")
-                        .HasColumnType("REAL");
-
-                    b.Property<float?>("CriticRating")
-                        .HasColumnType("REAL");
-
-                    b.Property<string>("CustomRating")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Data")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("DateCreated")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("DateLastMediaAdded")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("DateLastRefreshed")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("DateLastSaved")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("DateModified")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("EndDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("EpisodeTitle")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ExternalId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ExternalSeriesId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ExternalServiceId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ExtraIds")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ExtraType")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ForcedSortName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Genres")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("Height")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Images")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("IndexNumber")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int?>("InheritedParentalRatingValue")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsFolder")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsInMixedFolder")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsLocked")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsMovie")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsRepeat")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsSeries")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsVirtualItem")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<float?>("LUFS")
-                        .HasColumnType("REAL");
-
-                    b.Property<string>("LockedFields")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("MediaType")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Name")
-                        .HasColumnType("TEXT");
-
-                    b.Property<float?>("NormalizationGain")
-                        .HasColumnType("REAL");
-
-                    b.Property<string>("OfficialRating")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("OriginalTitle")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Overview")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("OwnerId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid?>("ParentId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("ParentIndexNumber")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Path")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PreferredMetadataCountryCode")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PreferredMetadataLanguage")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("PremiereDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PresentationUniqueKey")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PrimaryVersionId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ProductionLocations")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("ProductionYear")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<long?>("RunTimeTicks")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("SeasonId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("SeasonName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid?>("SeriesId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("SeriesName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("SeriesPresentationUniqueKey")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ShowId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<long?>("Size")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("SortName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("StartDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Studios")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Tagline")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Tags")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid?>("TopParentId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("TotalBitrate")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("TrailerTypes")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Type")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("UnratedType")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("UserDataKey")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("Width")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ParentId");
-
-                    b.HasIndex("Path");
-
-                    b.HasIndex("PresentationUniqueKey");
-
-                    b.HasIndex("TopParentId", "Id");
-
-                    b.HasIndex("UserDataKey", "Type");
-
-                    b.HasIndex("Type", "TopParentId", "Id");
-
-                    b.HasIndex("Type", "TopParentId", "PresentationUniqueKey");
-
-                    b.HasIndex("Type", "TopParentId", "StartDate");
-
-                    b.HasIndex("Id", "Type", "IsFolder", "IsVirtualItem");
-
-                    b.HasIndex("MediaType", "TopParentId", "IsVirtualItem", "PresentationUniqueKey");
-
-                    b.HasIndex("Type", "SeriesPresentationUniqueKey", "IsFolder", "IsVirtualItem");
-
-                    b.HasIndex("Type", "SeriesPresentationUniqueKey", "PresentationUniqueKey", "SortName");
-
-                    b.HasIndex("IsFolder", "TopParentId", "IsVirtualItem", "PresentationUniqueKey", "DateCreated");
-
-                    b.HasIndex("Type", "TopParentId", "IsVirtualItem", "PresentationUniqueKey", "DateCreated");
-
-                    b.ToTable("BaseItems");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemProvider", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ProviderId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ProviderValue")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("ItemId", "ProviderId");
-
-                    b.HasIndex("ProviderId", "ProviderValue", "ItemId");
-
-                    b.ToTable("BaseItemProviders");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Chapter", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("ChapterIndex")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<DateTime?>("ImageDateModified")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ImagePath")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Name")
-                        .HasColumnType("TEXT");
-
-                    b.Property<long>("StartPositionTicks")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("ItemId", "ChapterIndex");
-
-                    b.ToTable("Chapters");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.CustomItemDisplayPreferences", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Client")
-                        .IsRequired()
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Key")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Value")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "ItemId", "Client", "Key")
-                        .IsUnique();
-
-                    b.ToTable("CustomItemDisplayPreferences");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.DisplayPreferences", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("ChromecastVersion")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Client")
-                        .IsRequired()
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("DashboardTheme")
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("EnableNextVideoInfoOverlay")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int?>("IndexBy")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("ScrollDirection")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("ShowBackdrop")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("ShowSidebar")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("SkipBackwardLength")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("SkipForwardLength")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("TvHome")
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "ItemId", "Client")
-                        .IsUnique();
-
-                    b.ToTable("DisplayPreferences");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.HomeSection", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DisplayPreferencesId")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Order")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Type")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DisplayPreferencesId");
-
-                    b.ToTable("HomeSection");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ImageInfo", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<DateTime>("LastModified")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Path")
-                        .IsRequired()
-                        .HasMaxLength(512)
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid?>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId")
-                        .IsUnique();
-
-                    b.ToTable("ImageInfos");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ItemDisplayPreferences", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Client")
-                        .IsRequired()
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("IndexBy")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("RememberIndexing")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("RememberSorting")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("SortBy")
-                        .IsRequired()
-                        .HasMaxLength(64)
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("SortOrder")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("ViewType")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("ItemDisplayPreferences");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ItemValue", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Type")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Value")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CleanValue")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("ItemId", "Type", "Value");
-
-                    b.HasIndex("ItemId", "Type", "CleanValue");
-
-                    b.ToTable("ItemValues");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.MediaSegment", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("TEXT");
-
-                    b.Property<long>("EndTicks")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("SegmentProviderId")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<long>("StartTicks")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Type")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("MediaSegments");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.MediaStreamInfo", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("StreamIndex")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("AspectRatio")
-                        .HasColumnType("TEXT");
-
-                    b.Property<float>("AverageFrameRate")
-                        .HasColumnType("REAL");
-
-                    b.Property<int>("BitDepth")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("BitRate")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("BlPresentFlag")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("ChannelLayout")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Channels")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Codec")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CodecTag")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CodecTimeBase")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ColorPrimaries")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ColorSpace")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ColorTransfer")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Comment")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("DvBlSignalCompatibilityId")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DvLevel")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DvProfile")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DvVersionMajor")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DvVersionMinor")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("ElPresentFlag")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Height")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsAnamorphic")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsAvc")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsDefault")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsExternal")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsForced")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsHearingImpaired")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsInterlaced")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("KeyFrames")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Language")
-                        .HasColumnType("TEXT");
-
-                    b.Property<float>("Level")
-                        .HasColumnType("REAL");
-
-                    b.Property<string>("NalLengthSize")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Path")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PixelFormat")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Profile")
-                        .HasColumnType("TEXT");
-
-                    b.Property<float>("RealFrameRate")
-                        .HasColumnType("REAL");
-
-                    b.Property<int>("RefFrames")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Rotation")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("RpuPresentFlag")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("SampleRate")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("StreamType")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("TimeBase")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Width")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("ItemId", "StreamIndex");
-
-                    b.HasIndex("StreamIndex");
-
-                    b.HasIndex("StreamType");
-
-                    b.HasIndex("StreamIndex", "StreamType");
-
-                    b.HasIndex("StreamIndex", "StreamType", "Language");
-
-                    b.ToTable("MediaStreamInfos");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.People", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Role")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("ListOrder")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PersonType")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("SortOrder")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("ItemId", "Role", "ListOrder");
-
-                    b.HasIndex("Name");
-
-                    b.HasIndex("ItemId", "ListOrder");
-
-                    b.ToTable("Peoples");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Permission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Kind")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("Permission_Permissions_Guid")
-                        .HasColumnType("TEXT");
-
-                    b.Property<uint>("RowVersion")
-                        .IsConcurrencyToken()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("Value")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "Kind")
-                        .IsUnique()
-                        .HasFilter("[UserId] IS NOT NULL");
-
-                    b.ToTable("Permissions");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Preference", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Kind")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("Preference_Preferences_Guid")
-                        .HasColumnType("TEXT");
-
-                    b.Property<uint>("RowVersion")
-                        .IsConcurrencyToken()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Value")
-                        .IsRequired()
-                        .HasMaxLength(65535)
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "Kind")
-                        .IsUnique()
-                        .HasFilter("[UserId] IS NOT NULL");
-
-                    b.ToTable("Preferences");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Security.ApiKey", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("AccessToken")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("DateCreated")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("DateLastActivity")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasMaxLength(64)
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("AccessToken")
-                        .IsUnique();
-
-                    b.ToTable("ApiKeys");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Security.Device", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("AccessToken")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AppName")
-                        .IsRequired()
-                        .HasMaxLength(64)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AppVersion")
-                        .IsRequired()
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("DateCreated")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("DateLastActivity")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("DateModified")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("DeviceId")
-                        .IsRequired()
-                        .HasMaxLength(256)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("DeviceName")
-                        .IsRequired()
-                        .HasMaxLength(64)
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("IsActive")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DeviceId");
-
-                    b.HasIndex("AccessToken", "DateLastActivity");
-
-                    b.HasIndex("DeviceId", "DateLastActivity");
-
-                    b.HasIndex("UserId", "DeviceId");
-
-                    b.ToTable("Devices");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Security.DeviceOptions", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("CustomName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("DeviceId")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DeviceId")
-                        .IsUnique();
-
-                    b.ToTable("DeviceOptions");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.TrickplayInfo", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Width")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Bandwidth")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Height")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Interval")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("ThumbnailCount")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("TileHeight")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("TileWidth")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("ItemId", "Width");
-
-                    b.ToTable("TrickplayInfos");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.User", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AudioLanguagePreference")
-                        .HasMaxLength(255)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AuthenticationProviderId")
-                        .IsRequired()
-                        .HasMaxLength(255)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CastReceiverId")
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("DisplayCollectionsView")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("DisplayMissingEpisodes")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("EnableAutoLogin")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("EnableLocalPassword")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("EnableNextEpisodeAutoPlay")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("EnableUserPreferenceAccess")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("HidePlayedInLatest")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<long>("InternalId")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("InvalidLoginAttemptCount")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<DateTime?>("LastActivityDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("LastLoginDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("LoginAttemptsBeforeLockout")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("MaxActiveSessions")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int?>("MaxParentalAgeRating")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("MustUpdatePassword")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(65535)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PasswordResetProviderId")
-                        .IsRequired()
-                        .HasMaxLength(255)
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("PlayDefaultAudioTrack")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("RememberAudioSelections")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("RememberSubtitleSelections")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int?>("RemoteClientBitrateLimit")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<uint>("RowVersion")
-                        .IsConcurrencyToken()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("SubtitleLanguagePreference")
-                        .HasMaxLength(255)
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("SubtitleMode")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("SyncPlayAccess")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Username")
-                        .IsRequired()
-                        .HasMaxLength(255)
-                        .HasColumnType("TEXT")
-                        .UseCollation("NOCASE");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("Username")
-                        .IsUnique();
-
-                    b.ToTable("Users");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.UserData", b =>
-                {
-                    b.Property<string>("Key")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("AudioStreamIndex")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("BaseItemEntityId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("IsFavorite")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<DateTime?>("LastPlayedDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool?>("Likes")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("PlayCount")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<long>("PlaybackPositionTicks")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("Played")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<double?>("Rating")
-                        .HasColumnType("REAL");
-
-                    b.Property<int?>("SubtitleStreamIndex")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Key", "UserId");
-
-                    b.HasIndex("BaseItemEntityId");
-
-                    b.HasIndex("UserId");
-
-                    b.HasIndex("Key", "UserId", "IsFavorite");
-
-                    b.HasIndex("Key", "UserId", "LastPlayedDate");
-
-                    b.HasIndex("Key", "UserId", "PlaybackPositionTicks");
-
-                    b.HasIndex("Key", "UserId", "Played");
-
-                    b.ToTable("UserData");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AccessSchedule", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithMany("AccessSchedules")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AncestorId", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("AncestorIds")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AttachmentStreamInfo", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany()
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemProvider", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("Provider")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Chapter", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("Chapters")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.DisplayPreferences", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithMany("DisplayPreferences")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.HomeSection", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.DisplayPreferences", null)
-                        .WithMany("HomeSections")
-                        .HasForeignKey("DisplayPreferencesId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ImageInfo", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithOne("ProfileImage")
-                        .HasForeignKey("Jellyfin.Data.Entities.ImageInfo", "UserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ItemDisplayPreferences", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithMany("ItemDisplayPreferences")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ItemValue", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("ItemValues")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.MediaStreamInfo", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("MediaStreams")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.People", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("Peoples")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Permission", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithMany("Permissions")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Preference", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithMany("Preferences")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Security.Device", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", "User")
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.UserData", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", null)
-                        .WithMany("UserData")
-                        .HasForeignKey("BaseItemEntityId");
-
-                    b.HasOne("Jellyfin.Data.Entities.User", "User")
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemEntity", b =>
-                {
-                    b.Navigation("AncestorIds");
-
-                    b.Navigation("Chapters");
-
-                    b.Navigation("ItemValues");
-
-                    b.Navigation("MediaStreams");
-
-                    b.Navigation("Peoples");
-
-                    b.Navigation("Provider");
-
-                    b.Navigation("UserData");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.DisplayPreferences", b =>
-                {
-                    b.Navigation("HomeSections");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.User", b =>
-                {
-                    b.Navigation("AccessSchedules");
-
-                    b.Navigation("DisplayPreferences");
-
-                    b.Navigation("ItemDisplayPreferences");
-
-                    b.Navigation("Permissions");
-
-                    b.Navigation("Preferences");
-
-                    b.Navigation("ProfileImage");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}

+ 0 - 1540
Jellyfin.Server.Implementations/Migrations/20241009225800_ExpandedBaseItemFields.Designer.cs

@@ -1,1540 +0,0 @@
-// <auto-generated />
-using System;
-using Jellyfin.Server.Implementations;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-
-#nullable disable
-
-namespace Jellyfin.Server.Implementations.Migrations
-{
-    [DbContext(typeof(JellyfinDbContext))]
-    [Migration("20241009225800_ExpandedBaseItemFields")]
-    partial class ExpandedBaseItemFields
-    {
-        /// <inheritdoc />
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder.HasAnnotation("ProductVersion", "8.0.10");
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AccessSchedule", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DayOfWeek")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<double>("EndHour")
-                        .HasColumnType("REAL");
-
-                    b.Property<double>("StartHour")
-                        .HasColumnType("REAL");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AccessSchedules");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ActivityLog", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<DateTime>("DateCreated")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ItemId")
-                        .HasMaxLength(256)
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("LogSeverity")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasMaxLength(512)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Overview")
-                        .HasMaxLength(512)
-                        .HasColumnType("TEXT");
-
-                    b.Property<uint>("RowVersion")
-                        .IsConcurrencyToken()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("ShortOverview")
-                        .HasMaxLength(512)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Type")
-                        .IsRequired()
-                        .HasMaxLength(256)
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DateCreated");
-
-                    b.ToTable("ActivityLogs");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AncestorId", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("Id")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AncestorIdText")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("ItemId", "Id");
-
-                    b.HasIndex("Id");
-
-                    b.HasIndex("ItemId", "AncestorIdText");
-
-                    b.ToTable("AncestorIds");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AttachmentStreamInfo", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Index")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Codec")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CodecTag")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Comment")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Filename")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("MimeType")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("ItemId", "Index");
-
-                    b.ToTable("AttachmentStreamInfos");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemEntity", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Album")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AlbumArtists")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Artists")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("Audio")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("ChannelId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CleanName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<float?>("CommunityRating")
-                        .HasColumnType("REAL");
-
-                    b.Property<float?>("CriticRating")
-                        .HasColumnType("REAL");
-
-                    b.Property<string>("CustomRating")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Data")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("DateCreated")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("DateLastMediaAdded")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("DateLastRefreshed")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("DateLastSaved")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("DateModified")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("EndDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("EpisodeTitle")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ExternalId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ExternalSeriesId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ExternalServiceId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ExtraIds")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("ExtraType")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("ForcedSortName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Genres")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("Height")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int?>("IndexNumber")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int?>("InheritedParentalRatingValue")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsFolder")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsInMixedFolder")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsLocked")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsMovie")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsRepeat")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsSeries")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsVirtualItem")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<float?>("LUFS")
-                        .HasColumnType("REAL");
-
-                    b.Property<string>("MediaType")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Name")
-                        .HasColumnType("TEXT");
-
-                    b.Property<float?>("NormalizationGain")
-                        .HasColumnType("REAL");
-
-                    b.Property<string>("OfficialRating")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("OriginalTitle")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Overview")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("OwnerId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid?>("ParentId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("ParentIndexNumber")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Path")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PreferredMetadataCountryCode")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PreferredMetadataLanguage")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("PremiereDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PresentationUniqueKey")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PrimaryVersionId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ProductionLocations")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("ProductionYear")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<long?>("RunTimeTicks")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("SeasonId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("SeasonName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid?>("SeriesId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("SeriesName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("SeriesPresentationUniqueKey")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ShowId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<long?>("Size")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("SortName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("StartDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Studios")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Tagline")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Tags")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid?>("TopParentId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("TotalBitrate")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Type")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("UnratedType")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("UserDataKey")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("Width")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ParentId");
-
-                    b.HasIndex("Path");
-
-                    b.HasIndex("PresentationUniqueKey");
-
-                    b.HasIndex("TopParentId", "Id");
-
-                    b.HasIndex("UserDataKey", "Type");
-
-                    b.HasIndex("Type", "TopParentId", "Id");
-
-                    b.HasIndex("Type", "TopParentId", "PresentationUniqueKey");
-
-                    b.HasIndex("Type", "TopParentId", "StartDate");
-
-                    b.HasIndex("Id", "Type", "IsFolder", "IsVirtualItem");
-
-                    b.HasIndex("MediaType", "TopParentId", "IsVirtualItem", "PresentationUniqueKey");
-
-                    b.HasIndex("Type", "SeriesPresentationUniqueKey", "IsFolder", "IsVirtualItem");
-
-                    b.HasIndex("Type", "SeriesPresentationUniqueKey", "PresentationUniqueKey", "SortName");
-
-                    b.HasIndex("IsFolder", "TopParentId", "IsVirtualItem", "PresentationUniqueKey", "DateCreated");
-
-                    b.HasIndex("Type", "TopParentId", "IsVirtualItem", "PresentationUniqueKey", "DateCreated");
-
-                    b.ToTable("BaseItems");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemImageInfo", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("TEXT");
-
-                    b.Property<byte[]>("Blurhash")
-                        .HasColumnType("BLOB");
-
-                    b.Property<DateTime>("DateModified")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Height")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("ImageType")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Path")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Width")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ItemId");
-
-                    b.ToTable("BaseItemImageInfos");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemMetadataField", b =>
-                {
-                    b.Property<int>("Id")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id", "ItemId");
-
-                    b.HasIndex("ItemId");
-
-                    b.ToTable("BaseItemMetadataFields");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemProvider", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ProviderId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ProviderValue")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("ItemId", "ProviderId");
-
-                    b.HasIndex("ProviderId", "ProviderValue", "ItemId");
-
-                    b.ToTable("BaseItemProviders");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemTrailerType", b =>
-                {
-                    b.Property<int>("Id")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id", "ItemId");
-
-                    b.HasIndex("ItemId");
-
-                    b.ToTable("BaseItemTrailerTypes");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Chapter", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("ChapterIndex")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<DateTime?>("ImageDateModified")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ImagePath")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Name")
-                        .HasColumnType("TEXT");
-
-                    b.Property<long>("StartPositionTicks")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("ItemId", "ChapterIndex");
-
-                    b.ToTable("Chapters");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.CustomItemDisplayPreferences", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Client")
-                        .IsRequired()
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Key")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Value")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "ItemId", "Client", "Key")
-                        .IsUnique();
-
-                    b.ToTable("CustomItemDisplayPreferences");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.DisplayPreferences", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("ChromecastVersion")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Client")
-                        .IsRequired()
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("DashboardTheme")
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("EnableNextVideoInfoOverlay")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int?>("IndexBy")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("ScrollDirection")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("ShowBackdrop")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("ShowSidebar")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("SkipBackwardLength")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("SkipForwardLength")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("TvHome")
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "ItemId", "Client")
-                        .IsUnique();
-
-                    b.ToTable("DisplayPreferences");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.HomeSection", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DisplayPreferencesId")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Order")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Type")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DisplayPreferencesId");
-
-                    b.ToTable("HomeSection");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ImageInfo", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<DateTime>("LastModified")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Path")
-                        .IsRequired()
-                        .HasMaxLength(512)
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid?>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId")
-                        .IsUnique();
-
-                    b.ToTable("ImageInfos");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ItemDisplayPreferences", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Client")
-                        .IsRequired()
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("IndexBy")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("RememberIndexing")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("RememberSorting")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("SortBy")
-                        .IsRequired()
-                        .HasMaxLength(64)
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("SortOrder")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("ViewType")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("ItemDisplayPreferences");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ItemValue", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Type")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Value")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CleanValue")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("ItemId", "Type", "Value");
-
-                    b.HasIndex("ItemId", "Type", "CleanValue");
-
-                    b.ToTable("ItemValues");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.MediaSegment", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("TEXT");
-
-                    b.Property<long>("EndTicks")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("SegmentProviderId")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<long>("StartTicks")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Type")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("MediaSegments");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.MediaStreamInfo", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("StreamIndex")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("AspectRatio")
-                        .HasColumnType("TEXT");
-
-                    b.Property<float>("AverageFrameRate")
-                        .HasColumnType("REAL");
-
-                    b.Property<int>("BitDepth")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("BitRate")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("BlPresentFlag")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("ChannelLayout")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Channels")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Codec")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CodecTag")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CodecTimeBase")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ColorPrimaries")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ColorSpace")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ColorTransfer")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Comment")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("DvBlSignalCompatibilityId")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DvLevel")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DvProfile")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DvVersionMajor")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DvVersionMinor")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("ElPresentFlag")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Height")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsAnamorphic")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsAvc")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsDefault")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsExternal")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsForced")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsHearingImpaired")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsInterlaced")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("KeyFrames")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Language")
-                        .HasColumnType("TEXT");
-
-                    b.Property<float>("Level")
-                        .HasColumnType("REAL");
-
-                    b.Property<string>("NalLengthSize")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Path")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PixelFormat")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Profile")
-                        .HasColumnType("TEXT");
-
-                    b.Property<float>("RealFrameRate")
-                        .HasColumnType("REAL");
-
-                    b.Property<int>("RefFrames")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Rotation")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("RpuPresentFlag")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("SampleRate")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("StreamType")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("TimeBase")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Width")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("ItemId", "StreamIndex");
-
-                    b.HasIndex("StreamIndex");
-
-                    b.HasIndex("StreamType");
-
-                    b.HasIndex("StreamIndex", "StreamType");
-
-                    b.HasIndex("StreamIndex", "StreamType", "Language");
-
-                    b.ToTable("MediaStreamInfos");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.People", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Role")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("ListOrder")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PersonType")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("SortOrder")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("ItemId", "Role", "ListOrder");
-
-                    b.HasIndex("Name");
-
-                    b.HasIndex("ItemId", "ListOrder");
-
-                    b.ToTable("Peoples");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Permission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Kind")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("Permission_Permissions_Guid")
-                        .HasColumnType("TEXT");
-
-                    b.Property<uint>("RowVersion")
-                        .IsConcurrencyToken()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("Value")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "Kind")
-                        .IsUnique()
-                        .HasFilter("[UserId] IS NOT NULL");
-
-                    b.ToTable("Permissions");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Preference", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Kind")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("Preference_Preferences_Guid")
-                        .HasColumnType("TEXT");
-
-                    b.Property<uint>("RowVersion")
-                        .IsConcurrencyToken()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Value")
-                        .IsRequired()
-                        .HasMaxLength(65535)
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "Kind")
-                        .IsUnique()
-                        .HasFilter("[UserId] IS NOT NULL");
-
-                    b.ToTable("Preferences");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Security.ApiKey", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("AccessToken")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("DateCreated")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("DateLastActivity")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasMaxLength(64)
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("AccessToken")
-                        .IsUnique();
-
-                    b.ToTable("ApiKeys");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Security.Device", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("AccessToken")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AppName")
-                        .IsRequired()
-                        .HasMaxLength(64)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AppVersion")
-                        .IsRequired()
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("DateCreated")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("DateLastActivity")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("DateModified")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("DeviceId")
-                        .IsRequired()
-                        .HasMaxLength(256)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("DeviceName")
-                        .IsRequired()
-                        .HasMaxLength(64)
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("IsActive")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DeviceId");
-
-                    b.HasIndex("AccessToken", "DateLastActivity");
-
-                    b.HasIndex("DeviceId", "DateLastActivity");
-
-                    b.HasIndex("UserId", "DeviceId");
-
-                    b.ToTable("Devices");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Security.DeviceOptions", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("CustomName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("DeviceId")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DeviceId")
-                        .IsUnique();
-
-                    b.ToTable("DeviceOptions");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.TrickplayInfo", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Width")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Bandwidth")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Height")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Interval")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("ThumbnailCount")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("TileHeight")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("TileWidth")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("ItemId", "Width");
-
-                    b.ToTable("TrickplayInfos");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.User", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AudioLanguagePreference")
-                        .HasMaxLength(255)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AuthenticationProviderId")
-                        .IsRequired()
-                        .HasMaxLength(255)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CastReceiverId")
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("DisplayCollectionsView")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("DisplayMissingEpisodes")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("EnableAutoLogin")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("EnableLocalPassword")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("EnableNextEpisodeAutoPlay")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("EnableUserPreferenceAccess")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("HidePlayedInLatest")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<long>("InternalId")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("InvalidLoginAttemptCount")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<DateTime?>("LastActivityDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("LastLoginDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("LoginAttemptsBeforeLockout")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("MaxActiveSessions")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int?>("MaxParentalAgeRating")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("MustUpdatePassword")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(65535)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PasswordResetProviderId")
-                        .IsRequired()
-                        .HasMaxLength(255)
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("PlayDefaultAudioTrack")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("RememberAudioSelections")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("RememberSubtitleSelections")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int?>("RemoteClientBitrateLimit")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<uint>("RowVersion")
-                        .IsConcurrencyToken()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("SubtitleLanguagePreference")
-                        .HasMaxLength(255)
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("SubtitleMode")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("SyncPlayAccess")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Username")
-                        .IsRequired()
-                        .HasMaxLength(255)
-                        .HasColumnType("TEXT")
-                        .UseCollation("NOCASE");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("Username")
-                        .IsUnique();
-
-                    b.ToTable("Users");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.UserData", b =>
-                {
-                    b.Property<string>("Key")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("AudioStreamIndex")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("BaseItemEntityId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("IsFavorite")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<DateTime?>("LastPlayedDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool?>("Likes")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("PlayCount")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<long>("PlaybackPositionTicks")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("Played")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<double?>("Rating")
-                        .HasColumnType("REAL");
-
-                    b.Property<int?>("SubtitleStreamIndex")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Key", "UserId");
-
-                    b.HasIndex("BaseItemEntityId");
-
-                    b.HasIndex("UserId");
-
-                    b.HasIndex("Key", "UserId", "IsFavorite");
-
-                    b.HasIndex("Key", "UserId", "LastPlayedDate");
-
-                    b.HasIndex("Key", "UserId", "PlaybackPositionTicks");
-
-                    b.HasIndex("Key", "UserId", "Played");
-
-                    b.ToTable("UserData");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AccessSchedule", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithMany("AccessSchedules")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AncestorId", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("AncestorIds")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AttachmentStreamInfo", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany()
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemImageInfo", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("Images")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemMetadataField", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("LockedFields")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemProvider", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("Provider")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemTrailerType", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("TrailerTypes")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Chapter", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("Chapters")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.DisplayPreferences", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithMany("DisplayPreferences")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.HomeSection", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.DisplayPreferences", null)
-                        .WithMany("HomeSections")
-                        .HasForeignKey("DisplayPreferencesId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ImageInfo", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithOne("ProfileImage")
-                        .HasForeignKey("Jellyfin.Data.Entities.ImageInfo", "UserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ItemDisplayPreferences", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithMany("ItemDisplayPreferences")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ItemValue", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("ItemValues")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.MediaStreamInfo", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("MediaStreams")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.People", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("Peoples")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Permission", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithMany("Permissions")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Preference", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithMany("Preferences")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Security.Device", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", "User")
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.UserData", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", null)
-                        .WithMany("UserData")
-                        .HasForeignKey("BaseItemEntityId");
-
-                    b.HasOne("Jellyfin.Data.Entities.User", "User")
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemEntity", b =>
-                {
-                    b.Navigation("AncestorIds");
-
-                    b.Navigation("Chapters");
-
-                    b.Navigation("Images");
-
-                    b.Navigation("ItemValues");
-
-                    b.Navigation("LockedFields");
-
-                    b.Navigation("MediaStreams");
-
-                    b.Navigation("Peoples");
-
-                    b.Navigation("Provider");
-
-                    b.Navigation("TrailerTypes");
-
-                    b.Navigation("UserData");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.DisplayPreferences", b =>
-                {
-                    b.Navigation("HomeSections");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.User", b =>
-                {
-                    b.Navigation("AccessSchedules");
-
-                    b.Navigation("DisplayPreferences");
-
-                    b.Navigation("ItemDisplayPreferences");
-
-                    b.Navigation("Permissions");
-
-                    b.Navigation("Preferences");
-
-                    b.Navigation("ProfileImage");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}

+ 0 - 169
Jellyfin.Server.Implementations/Migrations/20241009225800_ExpandedBaseItemFields.cs

@@ -1,169 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace Jellyfin.Server.Implementations.Migrations
-{
-    /// <inheritdoc />
-    public partial class ExpandedBaseItemFields : Migration
-    {
-        /// <inheritdoc />
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "Images",
-                table: "BaseItems");
-
-            migrationBuilder.DropColumn(
-                name: "LockedFields",
-                table: "BaseItems");
-
-            migrationBuilder.DropColumn(
-                name: "TrailerTypes",
-                table: "BaseItems");
-
-            migrationBuilder.AlterColumn<int>(
-                name: "ExtraType",
-                table: "BaseItems",
-                type: "INTEGER",
-                nullable: true,
-                oldClrType: typeof(string),
-                oldType: "TEXT",
-                oldNullable: true);
-
-            migrationBuilder.AlterColumn<int>(
-                name: "Audio",
-                table: "BaseItems",
-                type: "INTEGER",
-                nullable: true,
-                oldClrType: typeof(string),
-                oldType: "TEXT",
-                oldNullable: true);
-
-            migrationBuilder.CreateTable(
-                name: "BaseItemImageInfos",
-                columns: table => new
-                {
-                    Id = table.Column<Guid>(type: "TEXT", nullable: false),
-                    Path = table.Column<string>(type: "TEXT", nullable: false),
-                    DateModified = table.Column<DateTime>(type: "TEXT", nullable: false),
-                    ImageType = table.Column<int>(type: "INTEGER", nullable: false),
-                    Width = table.Column<int>(type: "INTEGER", nullable: false),
-                    Height = table.Column<int>(type: "INTEGER", nullable: false),
-                    Blurhash = table.Column<byte[]>(type: "BLOB", nullable: true),
-                    ItemId = table.Column<Guid>(type: "TEXT", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_BaseItemImageInfos", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_BaseItemImageInfos_BaseItems_ItemId",
-                        column: x => x.ItemId,
-                        principalTable: "BaseItems",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "BaseItemMetadataFields",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "INTEGER", nullable: false),
-                    ItemId = table.Column<Guid>(type: "TEXT", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_BaseItemMetadataFields", x => new { x.Id, x.ItemId });
-                    table.ForeignKey(
-                        name: "FK_BaseItemMetadataFields_BaseItems_ItemId",
-                        column: x => x.ItemId,
-                        principalTable: "BaseItems",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "BaseItemTrailerTypes",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "INTEGER", nullable: false),
-                    ItemId = table.Column<Guid>(type: "TEXT", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_BaseItemTrailerTypes", x => new { x.Id, x.ItemId });
-                    table.ForeignKey(
-                        name: "FK_BaseItemTrailerTypes_BaseItems_ItemId",
-                        column: x => x.ItemId,
-                        principalTable: "BaseItems",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateIndex(
-                name: "IX_BaseItemImageInfos_ItemId",
-                table: "BaseItemImageInfos",
-                column: "ItemId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_BaseItemMetadataFields_ItemId",
-                table: "BaseItemMetadataFields",
-                column: "ItemId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_BaseItemTrailerTypes_ItemId",
-                table: "BaseItemTrailerTypes",
-                column: "ItemId");
-        }
-
-        /// <inheritdoc />
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "BaseItemImageInfos");
-
-            migrationBuilder.DropTable(
-                name: "BaseItemMetadataFields");
-
-            migrationBuilder.DropTable(
-                name: "BaseItemTrailerTypes");
-
-            migrationBuilder.AlterColumn<string>(
-                name: "ExtraType",
-                table: "BaseItems",
-                type: "TEXT",
-                nullable: true,
-                oldClrType: typeof(int),
-                oldType: "INTEGER",
-                oldNullable: true);
-
-            migrationBuilder.AlterColumn<string>(
-                name: "Audio",
-                table: "BaseItems",
-                type: "TEXT",
-                nullable: true,
-                oldClrType: typeof(int),
-                oldType: "INTEGER",
-                oldNullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "Images",
-                table: "BaseItems",
-                type: "TEXT",
-                nullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "LockedFields",
-                table: "BaseItems",
-                type: "TEXT",
-                nullable: true);
-
-            migrationBuilder.AddColumn<string>(
-                name: "TrailerTypes",
-                table: "BaseItems",
-                type: "TEXT",
-                nullable: true);
-        }
-    }
-}

+ 0 - 1536
Jellyfin.Server.Implementations/Migrations/20241009231203_FixedAncestorIds.Designer.cs

@@ -1,1536 +0,0 @@
-// <auto-generated />
-using System;
-using Jellyfin.Server.Implementations;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-
-#nullable disable
-
-namespace Jellyfin.Server.Implementations.Migrations
-{
-    [DbContext(typeof(JellyfinDbContext))]
-    [Migration("20241009231203_FixedAncestorIds")]
-    partial class FixedAncestorIds
-    {
-        /// <inheritdoc />
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder.HasAnnotation("ProductVersion", "8.0.10");
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AccessSchedule", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DayOfWeek")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<double>("EndHour")
-                        .HasColumnType("REAL");
-
-                    b.Property<double>("StartHour")
-                        .HasColumnType("REAL");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AccessSchedules");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ActivityLog", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<DateTime>("DateCreated")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ItemId")
-                        .HasMaxLength(256)
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("LogSeverity")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasMaxLength(512)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Overview")
-                        .HasMaxLength(512)
-                        .HasColumnType("TEXT");
-
-                    b.Property<uint>("RowVersion")
-                        .IsConcurrencyToken()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("ShortOverview")
-                        .HasMaxLength(512)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Type")
-                        .IsRequired()
-                        .HasMaxLength(256)
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DateCreated");
-
-                    b.ToTable("ActivityLogs");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AncestorId", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("ParentItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid?>("BaseItemEntityId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("ItemId", "ParentItemId");
-
-                    b.HasIndex("BaseItemEntityId");
-
-                    b.HasIndex("ParentItemId");
-
-                    b.ToTable("AncestorIds");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AttachmentStreamInfo", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Index")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Codec")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CodecTag")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Comment")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Filename")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("MimeType")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("ItemId", "Index");
-
-                    b.ToTable("AttachmentStreamInfos");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemEntity", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Album")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AlbumArtists")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Artists")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("Audio")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("ChannelId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CleanName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<float?>("CommunityRating")
-                        .HasColumnType("REAL");
-
-                    b.Property<float?>("CriticRating")
-                        .HasColumnType("REAL");
-
-                    b.Property<string>("CustomRating")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Data")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("DateCreated")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("DateLastMediaAdded")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("DateLastRefreshed")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("DateLastSaved")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("DateModified")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("EndDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("EpisodeTitle")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ExternalId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ExternalSeriesId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ExternalServiceId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ExtraIds")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("ExtraType")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("ForcedSortName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Genres")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("Height")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int?>("IndexNumber")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int?>("InheritedParentalRatingValue")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsFolder")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsInMixedFolder")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsLocked")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsMovie")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsRepeat")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsSeries")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsVirtualItem")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<float?>("LUFS")
-                        .HasColumnType("REAL");
-
-                    b.Property<string>("MediaType")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Name")
-                        .HasColumnType("TEXT");
-
-                    b.Property<float?>("NormalizationGain")
-                        .HasColumnType("REAL");
-
-                    b.Property<string>("OfficialRating")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("OriginalTitle")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Overview")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("OwnerId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid?>("ParentId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("ParentIndexNumber")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Path")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PreferredMetadataCountryCode")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PreferredMetadataLanguage")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("PremiereDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PresentationUniqueKey")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PrimaryVersionId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ProductionLocations")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("ProductionYear")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<long?>("RunTimeTicks")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("SeasonId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("SeasonName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid?>("SeriesId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("SeriesName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("SeriesPresentationUniqueKey")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ShowId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<long?>("Size")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("SortName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("StartDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Studios")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Tagline")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Tags")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid?>("TopParentId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("TotalBitrate")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Type")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("UnratedType")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("UserDataKey")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("Width")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ParentId");
-
-                    b.HasIndex("Path");
-
-                    b.HasIndex("PresentationUniqueKey");
-
-                    b.HasIndex("TopParentId", "Id");
-
-                    b.HasIndex("UserDataKey", "Type");
-
-                    b.HasIndex("Type", "TopParentId", "Id");
-
-                    b.HasIndex("Type", "TopParentId", "PresentationUniqueKey");
-
-                    b.HasIndex("Type", "TopParentId", "StartDate");
-
-                    b.HasIndex("Id", "Type", "IsFolder", "IsVirtualItem");
-
-                    b.HasIndex("MediaType", "TopParentId", "IsVirtualItem", "PresentationUniqueKey");
-
-                    b.HasIndex("Type", "SeriesPresentationUniqueKey", "IsFolder", "IsVirtualItem");
-
-                    b.HasIndex("Type", "SeriesPresentationUniqueKey", "PresentationUniqueKey", "SortName");
-
-                    b.HasIndex("IsFolder", "TopParentId", "IsVirtualItem", "PresentationUniqueKey", "DateCreated");
-
-                    b.HasIndex("Type", "TopParentId", "IsVirtualItem", "PresentationUniqueKey", "DateCreated");
-
-                    b.ToTable("BaseItems");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemImageInfo", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("TEXT");
-
-                    b.Property<byte[]>("Blurhash")
-                        .HasColumnType("BLOB");
-
-                    b.Property<DateTime>("DateModified")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Height")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("ImageType")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Path")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Width")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ItemId");
-
-                    b.ToTable("BaseItemImageInfos");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemMetadataField", b =>
-                {
-                    b.Property<int>("Id")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id", "ItemId");
-
-                    b.HasIndex("ItemId");
-
-                    b.ToTable("BaseItemMetadataFields");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemProvider", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ProviderId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ProviderValue")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("ItemId", "ProviderId");
-
-                    b.HasIndex("ProviderId", "ProviderValue", "ItemId");
-
-                    b.ToTable("BaseItemProviders");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemTrailerType", b =>
-                {
-                    b.Property<int>("Id")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id", "ItemId");
-
-                    b.HasIndex("ItemId");
-
-                    b.ToTable("BaseItemTrailerTypes");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Chapter", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("ChapterIndex")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<DateTime?>("ImageDateModified")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ImagePath")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Name")
-                        .HasColumnType("TEXT");
-
-                    b.Property<long>("StartPositionTicks")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("ItemId", "ChapterIndex");
-
-                    b.ToTable("Chapters");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.CustomItemDisplayPreferences", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Client")
-                        .IsRequired()
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Key")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Value")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "ItemId", "Client", "Key")
-                        .IsUnique();
-
-                    b.ToTable("CustomItemDisplayPreferences");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.DisplayPreferences", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("ChromecastVersion")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Client")
-                        .IsRequired()
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("DashboardTheme")
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("EnableNextVideoInfoOverlay")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int?>("IndexBy")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("ScrollDirection")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("ShowBackdrop")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("ShowSidebar")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("SkipBackwardLength")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("SkipForwardLength")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("TvHome")
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "ItemId", "Client")
-                        .IsUnique();
-
-                    b.ToTable("DisplayPreferences");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.HomeSection", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DisplayPreferencesId")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Order")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Type")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DisplayPreferencesId");
-
-                    b.ToTable("HomeSection");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ImageInfo", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<DateTime>("LastModified")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Path")
-                        .IsRequired()
-                        .HasMaxLength(512)
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid?>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId")
-                        .IsUnique();
-
-                    b.ToTable("ImageInfos");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ItemDisplayPreferences", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Client")
-                        .IsRequired()
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("IndexBy")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("RememberIndexing")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("RememberSorting")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("SortBy")
-                        .IsRequired()
-                        .HasMaxLength(64)
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("SortOrder")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("ViewType")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("ItemDisplayPreferences");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ItemValue", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Type")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Value")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CleanValue")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("ItemId", "Type", "Value");
-
-                    b.HasIndex("ItemId", "Type", "CleanValue");
-
-                    b.ToTable("ItemValues");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.MediaSegment", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("TEXT");
-
-                    b.Property<long>("EndTicks")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("SegmentProviderId")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<long>("StartTicks")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Type")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("MediaSegments");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.MediaStreamInfo", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("StreamIndex")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("AspectRatio")
-                        .HasColumnType("TEXT");
-
-                    b.Property<float>("AverageFrameRate")
-                        .HasColumnType("REAL");
-
-                    b.Property<int>("BitDepth")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("BitRate")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("BlPresentFlag")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("ChannelLayout")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Channels")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Codec")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CodecTag")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CodecTimeBase")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ColorPrimaries")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ColorSpace")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ColorTransfer")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Comment")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("DvBlSignalCompatibilityId")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DvLevel")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DvProfile")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DvVersionMajor")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DvVersionMinor")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("ElPresentFlag")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Height")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsAnamorphic")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsAvc")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsDefault")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsExternal")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsForced")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsHearingImpaired")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsInterlaced")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("KeyFrames")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Language")
-                        .HasColumnType("TEXT");
-
-                    b.Property<float>("Level")
-                        .HasColumnType("REAL");
-
-                    b.Property<string>("NalLengthSize")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Path")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PixelFormat")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Profile")
-                        .HasColumnType("TEXT");
-
-                    b.Property<float>("RealFrameRate")
-                        .HasColumnType("REAL");
-
-                    b.Property<int>("RefFrames")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Rotation")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("RpuPresentFlag")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("SampleRate")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("StreamType")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("TimeBase")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Width")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("ItemId", "StreamIndex");
-
-                    b.HasIndex("StreamIndex");
-
-                    b.HasIndex("StreamType");
-
-                    b.HasIndex("StreamIndex", "StreamType");
-
-                    b.HasIndex("StreamIndex", "StreamType", "Language");
-
-                    b.ToTable("MediaStreamInfos");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.People", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Role")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("ListOrder")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PersonType")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("SortOrder")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("ItemId", "Role", "ListOrder");
-
-                    b.HasIndex("Name");
-
-                    b.HasIndex("ItemId", "ListOrder");
-
-                    b.ToTable("Peoples");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Permission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Kind")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("Permission_Permissions_Guid")
-                        .HasColumnType("TEXT");
-
-                    b.Property<uint>("RowVersion")
-                        .IsConcurrencyToken()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("Value")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "Kind")
-                        .IsUnique()
-                        .HasFilter("[UserId] IS NOT NULL");
-
-                    b.ToTable("Permissions");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Preference", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Kind")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("Preference_Preferences_Guid")
-                        .HasColumnType("TEXT");
-
-                    b.Property<uint>("RowVersion")
-                        .IsConcurrencyToken()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Value")
-                        .IsRequired()
-                        .HasMaxLength(65535)
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "Kind")
-                        .IsUnique()
-                        .HasFilter("[UserId] IS NOT NULL");
-
-                    b.ToTable("Preferences");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Security.ApiKey", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("AccessToken")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("DateCreated")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("DateLastActivity")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasMaxLength(64)
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("AccessToken")
-                        .IsUnique();
-
-                    b.ToTable("ApiKeys");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Security.Device", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("AccessToken")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AppName")
-                        .IsRequired()
-                        .HasMaxLength(64)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AppVersion")
-                        .IsRequired()
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("DateCreated")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("DateLastActivity")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("DateModified")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("DeviceId")
-                        .IsRequired()
-                        .HasMaxLength(256)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("DeviceName")
-                        .IsRequired()
-                        .HasMaxLength(64)
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("IsActive")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DeviceId");
-
-                    b.HasIndex("AccessToken", "DateLastActivity");
-
-                    b.HasIndex("DeviceId", "DateLastActivity");
-
-                    b.HasIndex("UserId", "DeviceId");
-
-                    b.ToTable("Devices");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Security.DeviceOptions", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("CustomName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("DeviceId")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DeviceId")
-                        .IsUnique();
-
-                    b.ToTable("DeviceOptions");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.TrickplayInfo", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Width")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Bandwidth")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Height")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Interval")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("ThumbnailCount")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("TileHeight")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("TileWidth")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("ItemId", "Width");
-
-                    b.ToTable("TrickplayInfos");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.User", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AudioLanguagePreference")
-                        .HasMaxLength(255)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AuthenticationProviderId")
-                        .IsRequired()
-                        .HasMaxLength(255)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CastReceiverId")
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("DisplayCollectionsView")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("DisplayMissingEpisodes")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("EnableAutoLogin")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("EnableLocalPassword")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("EnableNextEpisodeAutoPlay")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("EnableUserPreferenceAccess")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("HidePlayedInLatest")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<long>("InternalId")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("InvalidLoginAttemptCount")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<DateTime?>("LastActivityDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("LastLoginDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("LoginAttemptsBeforeLockout")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("MaxActiveSessions")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int?>("MaxParentalAgeRating")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("MustUpdatePassword")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(65535)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PasswordResetProviderId")
-                        .IsRequired()
-                        .HasMaxLength(255)
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("PlayDefaultAudioTrack")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("RememberAudioSelections")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("RememberSubtitleSelections")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int?>("RemoteClientBitrateLimit")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<uint>("RowVersion")
-                        .IsConcurrencyToken()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("SubtitleLanguagePreference")
-                        .HasMaxLength(255)
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("SubtitleMode")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("SyncPlayAccess")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Username")
-                        .IsRequired()
-                        .HasMaxLength(255)
-                        .HasColumnType("TEXT")
-                        .UseCollation("NOCASE");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("Username")
-                        .IsUnique();
-
-                    b.ToTable("Users");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.UserData", b =>
-                {
-                    b.Property<string>("Key")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("AudioStreamIndex")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("BaseItemEntityId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("IsFavorite")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<DateTime?>("LastPlayedDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool?>("Likes")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("PlayCount")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<long>("PlaybackPositionTicks")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("Played")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<double?>("Rating")
-                        .HasColumnType("REAL");
-
-                    b.Property<int?>("SubtitleStreamIndex")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Key", "UserId");
-
-                    b.HasIndex("BaseItemEntityId");
-
-                    b.HasIndex("UserId");
-
-                    b.HasIndex("Key", "UserId", "IsFavorite");
-
-                    b.HasIndex("Key", "UserId", "LastPlayedDate");
-
-                    b.HasIndex("Key", "UserId", "PlaybackPositionTicks");
-
-                    b.HasIndex("Key", "UserId", "Played");
-
-                    b.ToTable("UserData");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AccessSchedule", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithMany("AccessSchedules")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AncestorId", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", null)
-                        .WithMany("AncestorIds")
-                        .HasForeignKey("BaseItemEntityId");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AttachmentStreamInfo", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany()
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemImageInfo", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("Images")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemMetadataField", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("LockedFields")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemProvider", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("Provider")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemTrailerType", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("TrailerTypes")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Chapter", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("Chapters")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.DisplayPreferences", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithMany("DisplayPreferences")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.HomeSection", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.DisplayPreferences", null)
-                        .WithMany("HomeSections")
-                        .HasForeignKey("DisplayPreferencesId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ImageInfo", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithOne("ProfileImage")
-                        .HasForeignKey("Jellyfin.Data.Entities.ImageInfo", "UserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ItemDisplayPreferences", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithMany("ItemDisplayPreferences")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ItemValue", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("ItemValues")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.MediaStreamInfo", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("MediaStreams")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.People", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("Peoples")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Permission", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithMany("Permissions")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Preference", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithMany("Preferences")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Security.Device", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", "User")
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.UserData", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", null)
-                        .WithMany("UserData")
-                        .HasForeignKey("BaseItemEntityId");
-
-                    b.HasOne("Jellyfin.Data.Entities.User", "User")
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemEntity", b =>
-                {
-                    b.Navigation("AncestorIds");
-
-                    b.Navigation("Chapters");
-
-                    b.Navigation("Images");
-
-                    b.Navigation("ItemValues");
-
-                    b.Navigation("LockedFields");
-
-                    b.Navigation("MediaStreams");
-
-                    b.Navigation("Peoples");
-
-                    b.Navigation("Provider");
-
-                    b.Navigation("TrailerTypes");
-
-                    b.Navigation("UserData");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.DisplayPreferences", b =>
-                {
-                    b.Navigation("HomeSections");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.User", b =>
-                {
-                    b.Navigation("AccessSchedules");
-
-                    b.Navigation("DisplayPreferences");
-
-                    b.Navigation("ItemDisplayPreferences");
-
-                    b.Navigation("Permissions");
-
-                    b.Navigation("Preferences");
-
-                    b.Navigation("ProfileImage");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}

+ 0 - 89
Jellyfin.Server.Implementations/Migrations/20241009231203_FixedAncestorIds.cs

@@ -1,89 +0,0 @@
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace Jellyfin.Server.Implementations.Migrations
-{
-    /// <inheritdoc />
-    public partial class FixedAncestorIds : Migration
-    {
-        /// <inheritdoc />
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_AncestorIds_BaseItems_ItemId",
-                table: "AncestorIds");
-
-            migrationBuilder.DropIndex(
-                name: "IX_AncestorIds_ItemId_AncestorIdText",
-                table: "AncestorIds");
-
-            migrationBuilder.RenameColumn(
-                name: "AncestorIdText",
-                table: "AncestorIds",
-                newName: "BaseItemEntityId");
-
-            migrationBuilder.RenameColumn(
-                name: "Id",
-                table: "AncestorIds",
-                newName: "ParentItemId");
-
-            migrationBuilder.RenameIndex(
-                name: "IX_AncestorIds_Id",
-                table: "AncestorIds",
-                newName: "IX_AncestorIds_ParentItemId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_AncestorIds_BaseItemEntityId",
-                table: "AncestorIds",
-                column: "BaseItemEntityId");
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_AncestorIds_BaseItems_BaseItemEntityId",
-                table: "AncestorIds",
-                column: "BaseItemEntityId",
-                principalTable: "BaseItems",
-                principalColumn: "Id");
-        }
-
-        /// <inheritdoc />
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_AncestorIds_BaseItems_BaseItemEntityId",
-                table: "AncestorIds");
-
-            migrationBuilder.DropIndex(
-                name: "IX_AncestorIds_BaseItemEntityId",
-                table: "AncestorIds");
-
-            migrationBuilder.RenameColumn(
-                name: "BaseItemEntityId",
-                table: "AncestorIds",
-                newName: "AncestorIdText");
-
-            migrationBuilder.RenameColumn(
-                name: "ParentItemId",
-                table: "AncestorIds",
-                newName: "Id");
-
-            migrationBuilder.RenameIndex(
-                name: "IX_AncestorIds_ParentItemId",
-                table: "AncestorIds",
-                newName: "IX_AncestorIds_Id");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_AncestorIds_ItemId_AncestorIdText",
-                table: "AncestorIds",
-                columns: new[] { "ItemId", "AncestorIdText" });
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_AncestorIds_BaseItems_ItemId",
-                table: "AncestorIds",
-                column: "ItemId",
-                principalTable: "BaseItems",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-        }
-    }
-}

+ 0 - 1536
Jellyfin.Server.Implementations/Migrations/20241009231912_FixedStreamType.Designer.cs

@@ -1,1536 +0,0 @@
-// <auto-generated />
-using System;
-using Jellyfin.Server.Implementations;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-
-#nullable disable
-
-namespace Jellyfin.Server.Implementations.Migrations
-{
-    [DbContext(typeof(JellyfinDbContext))]
-    [Migration("20241009231912_FixedStreamType")]
-    partial class FixedStreamType
-    {
-        /// <inheritdoc />
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder.HasAnnotation("ProductVersion", "8.0.10");
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AccessSchedule", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DayOfWeek")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<double>("EndHour")
-                        .HasColumnType("REAL");
-
-                    b.Property<double>("StartHour")
-                        .HasColumnType("REAL");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AccessSchedules");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ActivityLog", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<DateTime>("DateCreated")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ItemId")
-                        .HasMaxLength(256)
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("LogSeverity")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasMaxLength(512)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Overview")
-                        .HasMaxLength(512)
-                        .HasColumnType("TEXT");
-
-                    b.Property<uint>("RowVersion")
-                        .IsConcurrencyToken()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("ShortOverview")
-                        .HasMaxLength(512)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Type")
-                        .IsRequired()
-                        .HasMaxLength(256)
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DateCreated");
-
-                    b.ToTable("ActivityLogs");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AncestorId", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("ParentItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid?>("BaseItemEntityId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("ItemId", "ParentItemId");
-
-                    b.HasIndex("BaseItemEntityId");
-
-                    b.HasIndex("ParentItemId");
-
-                    b.ToTable("AncestorIds");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AttachmentStreamInfo", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Index")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Codec")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CodecTag")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Comment")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Filename")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("MimeType")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("ItemId", "Index");
-
-                    b.ToTable("AttachmentStreamInfos");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemEntity", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Album")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AlbumArtists")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Artists")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("Audio")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("ChannelId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CleanName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<float?>("CommunityRating")
-                        .HasColumnType("REAL");
-
-                    b.Property<float?>("CriticRating")
-                        .HasColumnType("REAL");
-
-                    b.Property<string>("CustomRating")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Data")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("DateCreated")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("DateLastMediaAdded")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("DateLastRefreshed")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("DateLastSaved")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("DateModified")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("EndDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("EpisodeTitle")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ExternalId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ExternalSeriesId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ExternalServiceId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ExtraIds")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("ExtraType")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("ForcedSortName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Genres")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("Height")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int?>("IndexNumber")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int?>("InheritedParentalRatingValue")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsFolder")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsInMixedFolder")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsLocked")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsMovie")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsRepeat")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsSeries")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsVirtualItem")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<float?>("LUFS")
-                        .HasColumnType("REAL");
-
-                    b.Property<string>("MediaType")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Name")
-                        .HasColumnType("TEXT");
-
-                    b.Property<float?>("NormalizationGain")
-                        .HasColumnType("REAL");
-
-                    b.Property<string>("OfficialRating")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("OriginalTitle")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Overview")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("OwnerId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid?>("ParentId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("ParentIndexNumber")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Path")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PreferredMetadataCountryCode")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PreferredMetadataLanguage")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("PremiereDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PresentationUniqueKey")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PrimaryVersionId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ProductionLocations")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("ProductionYear")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<long?>("RunTimeTicks")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("SeasonId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("SeasonName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid?>("SeriesId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("SeriesName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("SeriesPresentationUniqueKey")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ShowId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<long?>("Size")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("SortName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("StartDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Studios")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Tagline")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Tags")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid?>("TopParentId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("TotalBitrate")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Type")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("UnratedType")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("UserDataKey")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("Width")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ParentId");
-
-                    b.HasIndex("Path");
-
-                    b.HasIndex("PresentationUniqueKey");
-
-                    b.HasIndex("TopParentId", "Id");
-
-                    b.HasIndex("UserDataKey", "Type");
-
-                    b.HasIndex("Type", "TopParentId", "Id");
-
-                    b.HasIndex("Type", "TopParentId", "PresentationUniqueKey");
-
-                    b.HasIndex("Type", "TopParentId", "StartDate");
-
-                    b.HasIndex("Id", "Type", "IsFolder", "IsVirtualItem");
-
-                    b.HasIndex("MediaType", "TopParentId", "IsVirtualItem", "PresentationUniqueKey");
-
-                    b.HasIndex("Type", "SeriesPresentationUniqueKey", "IsFolder", "IsVirtualItem");
-
-                    b.HasIndex("Type", "SeriesPresentationUniqueKey", "PresentationUniqueKey", "SortName");
-
-                    b.HasIndex("IsFolder", "TopParentId", "IsVirtualItem", "PresentationUniqueKey", "DateCreated");
-
-                    b.HasIndex("Type", "TopParentId", "IsVirtualItem", "PresentationUniqueKey", "DateCreated");
-
-                    b.ToTable("BaseItems");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemImageInfo", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("TEXT");
-
-                    b.Property<byte[]>("Blurhash")
-                        .HasColumnType("BLOB");
-
-                    b.Property<DateTime>("DateModified")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Height")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("ImageType")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Path")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Width")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("ItemId");
-
-                    b.ToTable("BaseItemImageInfos");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemMetadataField", b =>
-                {
-                    b.Property<int>("Id")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id", "ItemId");
-
-                    b.HasIndex("ItemId");
-
-                    b.ToTable("BaseItemMetadataFields");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemProvider", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ProviderId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ProviderValue")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("ItemId", "ProviderId");
-
-                    b.HasIndex("ProviderId", "ProviderValue", "ItemId");
-
-                    b.ToTable("BaseItemProviders");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemTrailerType", b =>
-                {
-                    b.Property<int>("Id")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id", "ItemId");
-
-                    b.HasIndex("ItemId");
-
-                    b.ToTable("BaseItemTrailerTypes");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Chapter", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("ChapterIndex")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<DateTime?>("ImageDateModified")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ImagePath")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Name")
-                        .HasColumnType("TEXT");
-
-                    b.Property<long>("StartPositionTicks")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("ItemId", "ChapterIndex");
-
-                    b.ToTable("Chapters");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.CustomItemDisplayPreferences", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Client")
-                        .IsRequired()
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Key")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Value")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "ItemId", "Client", "Key")
-                        .IsUnique();
-
-                    b.ToTable("CustomItemDisplayPreferences");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.DisplayPreferences", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("ChromecastVersion")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Client")
-                        .IsRequired()
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("DashboardTheme")
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("EnableNextVideoInfoOverlay")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int?>("IndexBy")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("ScrollDirection")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("ShowBackdrop")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("ShowSidebar")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("SkipBackwardLength")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("SkipForwardLength")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("TvHome")
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "ItemId", "Client")
-                        .IsUnique();
-
-                    b.ToTable("DisplayPreferences");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.HomeSection", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DisplayPreferencesId")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Order")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Type")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DisplayPreferencesId");
-
-                    b.ToTable("HomeSection");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ImageInfo", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<DateTime>("LastModified")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Path")
-                        .IsRequired()
-                        .HasMaxLength(512)
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid?>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId")
-                        .IsUnique();
-
-                    b.ToTable("ImageInfos");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ItemDisplayPreferences", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Client")
-                        .IsRequired()
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("IndexBy")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("RememberIndexing")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("RememberSorting")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("SortBy")
-                        .IsRequired()
-                        .HasMaxLength(64)
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("SortOrder")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("ViewType")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("ItemDisplayPreferences");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ItemValue", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Type")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Value")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CleanValue")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("ItemId", "Type", "Value");
-
-                    b.HasIndex("ItemId", "Type", "CleanValue");
-
-                    b.ToTable("ItemValues");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.MediaSegment", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("TEXT");
-
-                    b.Property<long>("EndTicks")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("SegmentProviderId")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<long>("StartTicks")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Type")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("MediaSegments");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.MediaStreamInfo", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("StreamIndex")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("AspectRatio")
-                        .HasColumnType("TEXT");
-
-                    b.Property<float>("AverageFrameRate")
-                        .HasColumnType("REAL");
-
-                    b.Property<int>("BitDepth")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("BitRate")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("BlPresentFlag")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("ChannelLayout")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Channels")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Codec")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CodecTag")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CodecTimeBase")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ColorPrimaries")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ColorSpace")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("ColorTransfer")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Comment")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("DvBlSignalCompatibilityId")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DvLevel")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DvProfile")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DvVersionMajor")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("DvVersionMinor")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("ElPresentFlag")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Height")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsAnamorphic")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsAvc")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsDefault")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsExternal")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsForced")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsHearingImpaired")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("IsInterlaced")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("KeyFrames")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Language")
-                        .HasColumnType("TEXT");
-
-                    b.Property<float>("Level")
-                        .HasColumnType("REAL");
-
-                    b.Property<string>("NalLengthSize")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Path")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PixelFormat")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Profile")
-                        .HasColumnType("TEXT");
-
-                    b.Property<float>("RealFrameRate")
-                        .HasColumnType("REAL");
-
-                    b.Property<int>("RefFrames")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Rotation")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("RpuPresentFlag")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("SampleRate")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int?>("StreamType")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("TimeBase")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Width")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("ItemId", "StreamIndex");
-
-                    b.HasIndex("StreamIndex");
-
-                    b.HasIndex("StreamType");
-
-                    b.HasIndex("StreamIndex", "StreamType");
-
-                    b.HasIndex("StreamIndex", "StreamType", "Language");
-
-                    b.ToTable("MediaStreamInfos");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.People", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Role")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("ListOrder")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PersonType")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("SortOrder")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("ItemId", "Role", "ListOrder");
-
-                    b.HasIndex("Name");
-
-                    b.HasIndex("ItemId", "ListOrder");
-
-                    b.ToTable("Peoples");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Permission", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Kind")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("Permission_Permissions_Guid")
-                        .HasColumnType("TEXT");
-
-                    b.Property<uint>("RowVersion")
-                        .IsConcurrencyToken()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("Value")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "Kind")
-                        .IsUnique()
-                        .HasFilter("[UserId] IS NOT NULL");
-
-                    b.ToTable("Permissions");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Preference", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Kind")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("Preference_Preferences_Guid")
-                        .HasColumnType("TEXT");
-
-                    b.Property<uint>("RowVersion")
-                        .IsConcurrencyToken()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Value")
-                        .IsRequired()
-                        .HasMaxLength(65535)
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "Kind")
-                        .IsUnique()
-                        .HasFilter("[UserId] IS NOT NULL");
-
-                    b.ToTable("Preferences");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Security.ApiKey", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("AccessToken")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("DateCreated")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("DateLastActivity")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasMaxLength(64)
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("AccessToken")
-                        .IsUnique();
-
-                    b.ToTable("ApiKeys");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Security.Device", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("AccessToken")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AppName")
-                        .IsRequired()
-                        .HasMaxLength(64)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AppVersion")
-                        .IsRequired()
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("DateCreated")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("DateLastActivity")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime>("DateModified")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("DeviceId")
-                        .IsRequired()
-                        .HasMaxLength(256)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("DeviceName")
-                        .IsRequired()
-                        .HasMaxLength(64)
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("IsActive")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DeviceId");
-
-                    b.HasIndex("AccessToken", "DateLastActivity");
-
-                    b.HasIndex("DeviceId", "DateLastActivity");
-
-                    b.HasIndex("UserId", "DeviceId");
-
-                    b.ToTable("Devices");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Security.DeviceOptions", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("CustomName")
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("DeviceId")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("DeviceId")
-                        .IsUnique();
-
-                    b.ToTable("DeviceOptions");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.TrickplayInfo", b =>
-                {
-                    b.Property<Guid>("ItemId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("Width")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Bandwidth")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Height")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("Interval")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("ThumbnailCount")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("TileHeight")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("TileWidth")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("ItemId", "Width");
-
-                    b.ToTable("TrickplayInfos");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.User", b =>
-                {
-                    b.Property<Guid>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AudioLanguagePreference")
-                        .HasMaxLength(255)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("AuthenticationProviderId")
-                        .IsRequired()
-                        .HasMaxLength(255)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("CastReceiverId")
-                        .HasMaxLength(32)
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("DisplayCollectionsView")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("DisplayMissingEpisodes")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("EnableAutoLogin")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("EnableLocalPassword")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("EnableNextEpisodeAutoPlay")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("EnableUserPreferenceAccess")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("HidePlayedInLatest")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<long>("InternalId")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("InvalidLoginAttemptCount")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<DateTime?>("LastActivityDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<DateTime?>("LastLoginDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("LoginAttemptsBeforeLockout")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("MaxActiveSessions")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int?>("MaxParentalAgeRating")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("MustUpdatePassword")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Password")
-                        .HasMaxLength(65535)
-                        .HasColumnType("TEXT");
-
-                    b.Property<string>("PasswordResetProviderId")
-                        .IsRequired()
-                        .HasMaxLength(255)
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("PlayDefaultAudioTrack")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("RememberAudioSelections")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("RememberSubtitleSelections")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int?>("RemoteClientBitrateLimit")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<uint>("RowVersion")
-                        .IsConcurrencyToken()
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("SubtitleLanguagePreference")
-                        .HasMaxLength(255)
-                        .HasColumnType("TEXT");
-
-                    b.Property<int>("SubtitleMode")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("SyncPlayAccess")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<string>("Username")
-                        .IsRequired()
-                        .HasMaxLength(255)
-                        .HasColumnType("TEXT")
-                        .UseCollation("NOCASE");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("Username")
-                        .IsUnique();
-
-                    b.ToTable("Users");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.UserData", b =>
-                {
-                    b.Property<string>("Key")
-                        .HasColumnType("TEXT");
-
-                    b.Property<Guid>("UserId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<int?>("AudioStreamIndex")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<Guid?>("BaseItemEntityId")
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool>("IsFavorite")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<DateTime?>("LastPlayedDate")
-                        .HasColumnType("TEXT");
-
-                    b.Property<bool?>("Likes")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<int>("PlayCount")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<long>("PlaybackPositionTicks")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("Played")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<double?>("Rating")
-                        .HasColumnType("REAL");
-
-                    b.Property<int?>("SubtitleStreamIndex")
-                        .HasColumnType("INTEGER");
-
-                    b.HasKey("Key", "UserId");
-
-                    b.HasIndex("BaseItemEntityId");
-
-                    b.HasIndex("UserId");
-
-                    b.HasIndex("Key", "UserId", "IsFavorite");
-
-                    b.HasIndex("Key", "UserId", "LastPlayedDate");
-
-                    b.HasIndex("Key", "UserId", "PlaybackPositionTicks");
-
-                    b.HasIndex("Key", "UserId", "Played");
-
-                    b.ToTable("UserData");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AccessSchedule", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithMany("AccessSchedules")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AncestorId", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", null)
-                        .WithMany("AncestorIds")
-                        .HasForeignKey("BaseItemEntityId");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.AttachmentStreamInfo", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany()
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemImageInfo", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("Images")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemMetadataField", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("LockedFields")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemProvider", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("Provider")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemTrailerType", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("TrailerTypes")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Chapter", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("Chapters")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.DisplayPreferences", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithMany("DisplayPreferences")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.HomeSection", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.DisplayPreferences", null)
-                        .WithMany("HomeSections")
-                        .HasForeignKey("DisplayPreferencesId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ImageInfo", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithOne("ProfileImage")
-                        .HasForeignKey("Jellyfin.Data.Entities.ImageInfo", "UserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ItemDisplayPreferences", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithMany("ItemDisplayPreferences")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.ItemValue", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("ItemValues")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.MediaStreamInfo", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("MediaStreams")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.People", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item")
-                        .WithMany("Peoples")
-                        .HasForeignKey("ItemId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Item");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Permission", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithMany("Permissions")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Preference", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", null)
-                        .WithMany("Preferences")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.Security.Device", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.User", "User")
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.UserData", b =>
-                {
-                    b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", null)
-                        .WithMany("UserData")
-                        .HasForeignKey("BaseItemEntityId");
-
-                    b.HasOne("Jellyfin.Data.Entities.User", "User")
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemEntity", b =>
-                {
-                    b.Navigation("AncestorIds");
-
-                    b.Navigation("Chapters");
-
-                    b.Navigation("Images");
-
-                    b.Navigation("ItemValues");
-
-                    b.Navigation("LockedFields");
-
-                    b.Navigation("MediaStreams");
-
-                    b.Navigation("Peoples");
-
-                    b.Navigation("Provider");
-
-                    b.Navigation("TrailerTypes");
-
-                    b.Navigation("UserData");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.DisplayPreferences", b =>
-                {
-                    b.Navigation("HomeSections");
-                });
-
-            modelBuilder.Entity("Jellyfin.Data.Entities.User", b =>
-                {
-                    b.Navigation("AccessSchedules");
-
-                    b.Navigation("DisplayPreferences");
-
-                    b.Navigation("ItemDisplayPreferences");
-
-                    b.Navigation("Permissions");
-
-                    b.Navigation("Preferences");
-
-                    b.Navigation("ProfileImage");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}

+ 0 - 36
Jellyfin.Server.Implementations/Migrations/20241009231912_FixedStreamType.cs

@@ -1,36 +0,0 @@
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace Jellyfin.Server.Implementations.Migrations
-{
-    /// <inheritdoc />
-    public partial class FixedStreamType : Migration
-    {
-        /// <inheritdoc />
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AlterColumn<int>(
-                name: "StreamType",
-                table: "MediaStreamInfos",
-                type: "INTEGER",
-                nullable: true,
-                oldClrType: typeof(string),
-                oldType: "TEXT",
-                oldNullable: true);
-        }
-
-        /// <inheritdoc />
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AlterColumn<string>(
-                name: "StreamType",
-                table: "MediaStreamInfos",
-                type: "TEXT",
-                nullable: true,
-                oldClrType: typeof(int),
-                oldType: "INTEGER",
-                oldNullable: true);
-        }
-    }
-}

+ 0 - 133
Jellyfin.Server.Implementations/Migrations/20241010142722_FixedItemValueReferenceStyle.cs

@@ -1,133 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace Jellyfin.Server.Implementations.Migrations
-{
-    /// <inheritdoc />
-    public partial class FixedItemValueReferenceStyle : Migration
-    {
-        /// <inheritdoc />
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_ItemValues_BaseItems_ItemId",
-                table: "ItemValues");
-
-            migrationBuilder.DropPrimaryKey(
-                name: "PK_ItemValues",
-                table: "ItemValues");
-
-            migrationBuilder.DropIndex(
-                name: "IX_ItemValues_ItemId_Type_CleanValue",
-                table: "ItemValues");
-
-            migrationBuilder.RenameColumn(
-                name: "ItemId",
-                table: "ItemValues",
-                newName: "ItemValueId");
-
-            migrationBuilder.AddPrimaryKey(
-                name: "PK_ItemValues",
-                table: "ItemValues",
-                column: "ItemValueId");
-
-            migrationBuilder.CreateTable(
-                name: "ItemValuesMap",
-                columns: table => new
-                {
-                    ItemId = table.Column<Guid>(type: "TEXT", nullable: false),
-                    ItemValueId = table.Column<Guid>(type: "TEXT", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_ItemValuesMap", x => new { x.ItemValueId, x.ItemId });
-                    table.ForeignKey(
-                        name: "FK_ItemValuesMap_BaseItems_ItemId",
-                        column: x => x.ItemId,
-                        principalTable: "BaseItems",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_ItemValuesMap_ItemValues_ItemValueId",
-                        column: x => x.ItemValueId,
-                        principalTable: "ItemValues",
-                        principalColumn: "ItemValueId",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateIndex(
-                name: "IX_ItemValues_Type_CleanValue",
-                table: "ItemValues",
-                columns: new[] { "Type", "CleanValue" });
-
-            migrationBuilder.CreateIndex(
-                name: "IX_ItemValuesMap_ItemId",
-                table: "ItemValuesMap",
-                column: "ItemId");
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_AncestorIds_BaseItems_ItemId",
-                table: "AncestorIds",
-                column: "ItemId",
-                principalTable: "BaseItems",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_AncestorIds_BaseItems_ParentItemId",
-                table: "AncestorIds",
-                column: "ParentItemId",
-                principalTable: "BaseItems",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-        }
-
-        /// <inheritdoc />
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_AncestorIds_BaseItems_ItemId",
-                table: "AncestorIds");
-
-            migrationBuilder.DropForeignKey(
-                name: "FK_AncestorIds_BaseItems_ParentItemId",
-                table: "AncestorIds");
-
-            migrationBuilder.DropTable(
-                name: "ItemValuesMap");
-
-            migrationBuilder.DropPrimaryKey(
-                name: "PK_ItemValues",
-                table: "ItemValues");
-
-            migrationBuilder.DropIndex(
-                name: "IX_ItemValues_Type_CleanValue",
-                table: "ItemValues");
-
-            migrationBuilder.RenameColumn(
-                name: "ItemValueId",
-                table: "ItemValues",
-                newName: "ItemId");
-
-            migrationBuilder.AddPrimaryKey(
-                name: "PK_ItemValues",
-                table: "ItemValues",
-                columns: new[] { "ItemId", "Type", "Value" });
-
-            migrationBuilder.CreateIndex(
-                name: "IX_ItemValues_ItemId_Type_CleanValue",
-                table: "ItemValues",
-                columns: new[] { "ItemId", "Type", "CleanValue" });
-
-            migrationBuilder.AddForeignKey(
-                name: "FK_ItemValues_BaseItems_ItemId",
-                table: "ItemValues",
-                column: "ItemId",
-                principalTable: "BaseItems",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-        }
-    }
-}

+ 2 - 2
Jellyfin.Server.Implementations/Migrations/20241010142722_FixedItemValueReferenceStyle.Designer.cs → Jellyfin.Server.Implementations/Migrations/20241010160703_LibraryDbMigration.Designer.cs

@@ -11,8 +11,8 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
 namespace Jellyfin.Server.Implementations.Migrations
 {
     [DbContext(typeof(JellyfinDbContext))]
-    [Migration("20241010142722_FixedItemValueReferenceStyle")]
-    partial class FixedItemValueReferenceStyle
+    [Migration("20241010160703_LibraryDbMigration")]
+    partial class LibraryDbMigration
     {
         /// <inheritdoc />
         protected override void BuildTargetModel(ModelBuilder modelBuilder)

+ 150 - 32
Jellyfin.Server.Implementations/Migrations/20241009132112_BaseItemRefactor.cs → Jellyfin.Server.Implementations/Migrations/20241010160703_LibraryDbMigration.cs

@@ -6,7 +6,7 @@ using Microsoft.EntityFrameworkCore.Migrations;
 namespace Jellyfin.Server.Implementations.Migrations
 {
     /// <inheritdoc />
-    public partial class BaseItemRefactor : Migration
+    public partial class LibraryDbMigration : Migration
     {
         /// <inheritdoc />
         protected override void Up(MigrationBuilder migrationBuilder)
@@ -48,15 +48,12 @@ namespace Jellyfin.Server.Implementations.Migrations
                     DateLastRefreshed = table.Column<DateTime>(type: "TEXT", nullable: true),
                     DateLastSaved = table.Column<DateTime>(type: "TEXT", nullable: true),
                     IsInMixedFolder = table.Column<bool>(type: "INTEGER", nullable: false),
-                    LockedFields = table.Column<string>(type: "TEXT", nullable: true),
                     Studios = table.Column<string>(type: "TEXT", nullable: true),
-                    Audio = table.Column<string>(type: "TEXT", nullable: true),
                     ExternalServiceId = table.Column<string>(type: "TEXT", nullable: true),
                     Tags = table.Column<string>(type: "TEXT", nullable: true),
                     IsFolder = table.Column<bool>(type: "INTEGER", nullable: false),
                     InheritedParentalRatingValue = table.Column<int>(type: "INTEGER", nullable: true),
                     UnratedType = table.Column<string>(type: "TEXT", nullable: true),
-                    TrailerTypes = table.Column<string>(type: "TEXT", nullable: true),
                     CriticRating = table.Column<float>(type: "REAL", nullable: true),
                     CleanName = table.Column<string>(type: "TEXT", nullable: true),
                     PresentationUniqueKey = table.Column<string>(type: "TEXT", nullable: true),
@@ -72,11 +69,10 @@ namespace Jellyfin.Server.Implementations.Migrations
                     SeasonName = table.Column<string>(type: "TEXT", nullable: true),
                     ExternalSeriesId = table.Column<string>(type: "TEXT", nullable: true),
                     Tagline = table.Column<string>(type: "TEXT", nullable: true),
-                    Images = table.Column<string>(type: "TEXT", nullable: true),
                     ProductionLocations = table.Column<string>(type: "TEXT", nullable: true),
                     ExtraIds = table.Column<string>(type: "TEXT", nullable: true),
                     TotalBitrate = table.Column<int>(type: "INTEGER", nullable: true),
-                    ExtraType = table.Column<string>(type: "TEXT", nullable: true),
+                    ExtraType = table.Column<int>(type: "INTEGER", nullable: true),
                     Artists = table.Column<string>(type: "TEXT", nullable: true),
                     AlbumArtists = table.Column<string>(type: "TEXT", nullable: true),
                     ExternalId = table.Column<string>(type: "TEXT", nullable: true),
@@ -86,6 +82,7 @@ namespace Jellyfin.Server.Implementations.Migrations
                     Width = table.Column<int>(type: "INTEGER", nullable: true),
                     Height = table.Column<int>(type: "INTEGER", nullable: true),
                     Size = table.Column<long>(type: "INTEGER", nullable: true),
+                    Audio = table.Column<int>(type: "INTEGER", nullable: true),
                     ParentId = table.Column<Guid>(type: "TEXT", nullable: true),
                     TopParentId = table.Column<Guid>(type: "TEXT", nullable: true),
                     SeasonId = table.Column<Guid>(type: "TEXT", nullable: true),
@@ -96,23 +93,48 @@ namespace Jellyfin.Server.Implementations.Migrations
                     table.PrimaryKey("PK_BaseItems", x => x.Id);
                 });
 
+            migrationBuilder.CreateTable(
+                name: "ItemValues",
+                columns: table => new
+                {
+                    ItemValueId = table.Column<Guid>(type: "TEXT", nullable: false),
+                    Type = table.Column<int>(type: "INTEGER", nullable: false),
+                    Value = table.Column<string>(type: "TEXT", nullable: false),
+                    CleanValue = table.Column<string>(type: "TEXT", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_ItemValues", x => x.ItemValueId);
+                });
+
             migrationBuilder.CreateTable(
                 name: "AncestorIds",
                 columns: table => new
                 {
-                    Id = table.Column<Guid>(type: "TEXT", nullable: false),
+                    ParentItemId = table.Column<Guid>(type: "TEXT", nullable: false),
                     ItemId = table.Column<Guid>(type: "TEXT", nullable: false),
-                    AncestorIdText = table.Column<string>(type: "TEXT", nullable: true)
+                    BaseItemEntityId = table.Column<Guid>(type: "TEXT", nullable: true)
                 },
                 constraints: table =>
                 {
-                    table.PrimaryKey("PK_AncestorIds", x => new { x.ItemId, x.Id });
+                    table.PrimaryKey("PK_AncestorIds", x => new { x.ItemId, x.ParentItemId });
+                    table.ForeignKey(
+                        name: "FK_AncestorIds_BaseItems_BaseItemEntityId",
+                        column: x => x.BaseItemEntityId,
+                        principalTable: "BaseItems",
+                        principalColumn: "Id");
                     table.ForeignKey(
                         name: "FK_AncestorIds_BaseItems_ItemId",
                         column: x => x.ItemId,
                         principalTable: "BaseItems",
                         principalColumn: "Id",
                         onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_AncestorIds_BaseItems_ParentItemId",
+                        column: x => x.ParentItemId,
+                        principalTable: "BaseItems",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
                 });
 
             migrationBuilder.CreateTable(
@@ -138,6 +160,48 @@ namespace Jellyfin.Server.Implementations.Migrations
                         onDelete: ReferentialAction.Cascade);
                 });
 
+            migrationBuilder.CreateTable(
+                name: "BaseItemImageInfos",
+                columns: table => new
+                {
+                    Id = table.Column<Guid>(type: "TEXT", nullable: false),
+                    Path = table.Column<string>(type: "TEXT", nullable: false),
+                    DateModified = table.Column<DateTime>(type: "TEXT", nullable: false),
+                    ImageType = table.Column<int>(type: "INTEGER", nullable: false),
+                    Width = table.Column<int>(type: "INTEGER", nullable: false),
+                    Height = table.Column<int>(type: "INTEGER", nullable: false),
+                    Blurhash = table.Column<byte[]>(type: "BLOB", nullable: true),
+                    ItemId = table.Column<Guid>(type: "TEXT", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_BaseItemImageInfos", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_BaseItemImageInfos_BaseItems_ItemId",
+                        column: x => x.ItemId,
+                        principalTable: "BaseItems",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "BaseItemMetadataFields",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "INTEGER", nullable: false),
+                    ItemId = table.Column<Guid>(type: "TEXT", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_BaseItemMetadataFields", x => new { x.Id, x.ItemId });
+                    table.ForeignKey(
+                        name: "FK_BaseItemMetadataFields_BaseItems_ItemId",
+                        column: x => x.ItemId,
+                        principalTable: "BaseItems",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
             migrationBuilder.CreateTable(
                 name: "BaseItemProviders",
                 columns: table => new
@@ -158,21 +222,17 @@ namespace Jellyfin.Server.Implementations.Migrations
                 });
 
             migrationBuilder.CreateTable(
-                name: "Chapters",
+                name: "BaseItemTrailerTypes",
                 columns: table => new
                 {
-                    ItemId = table.Column<Guid>(type: "TEXT", nullable: false),
-                    ChapterIndex = table.Column<int>(type: "INTEGER", nullable: false),
-                    StartPositionTicks = table.Column<long>(type: "INTEGER", nullable: false),
-                    Name = table.Column<string>(type: "TEXT", nullable: true),
-                    ImagePath = table.Column<string>(type: "TEXT", nullable: true),
-                    ImageDateModified = table.Column<DateTime>(type: "TEXT", nullable: true)
+                    Id = table.Column<int>(type: "INTEGER", nullable: false),
+                    ItemId = table.Column<Guid>(type: "TEXT", nullable: false)
                 },
                 constraints: table =>
                 {
-                    table.PrimaryKey("PK_Chapters", x => new { x.ItemId, x.ChapterIndex });
+                    table.PrimaryKey("PK_BaseItemTrailerTypes", x => new { x.Id, x.ItemId });
                     table.ForeignKey(
-                        name: "FK_Chapters_BaseItems_ItemId",
+                        name: "FK_BaseItemTrailerTypes_BaseItems_ItemId",
                         column: x => x.ItemId,
                         principalTable: "BaseItems",
                         principalColumn: "Id",
@@ -180,19 +240,21 @@ namespace Jellyfin.Server.Implementations.Migrations
                 });
 
             migrationBuilder.CreateTable(
-                name: "ItemValues",
+                name: "Chapters",
                 columns: table => new
                 {
                     ItemId = table.Column<Guid>(type: "TEXT", nullable: false),
-                    Type = table.Column<int>(type: "INTEGER", nullable: false),
-                    Value = table.Column<string>(type: "TEXT", nullable: false),
-                    CleanValue = table.Column<string>(type: "TEXT", nullable: false)
+                    ChapterIndex = table.Column<int>(type: "INTEGER", nullable: false),
+                    StartPositionTicks = table.Column<long>(type: "INTEGER", nullable: false),
+                    Name = table.Column<string>(type: "TEXT", nullable: true),
+                    ImagePath = table.Column<string>(type: "TEXT", nullable: true),
+                    ImageDateModified = table.Column<DateTime>(type: "TEXT", nullable: true)
                 },
                 constraints: table =>
                 {
-                    table.PrimaryKey("PK_ItemValues", x => new { x.ItemId, x.Type, x.Value });
+                    table.PrimaryKey("PK_Chapters", x => new { x.ItemId, x.ChapterIndex });
                     table.ForeignKey(
-                        name: "FK_ItemValues_BaseItems_ItemId",
+                        name: "FK_Chapters_BaseItems_ItemId",
                         column: x => x.ItemId,
                         principalTable: "BaseItems",
                         principalColumn: "Id",
@@ -205,7 +267,7 @@ namespace Jellyfin.Server.Implementations.Migrations
                 {
                     ItemId = table.Column<Guid>(type: "TEXT", nullable: false),
                     StreamIndex = table.Column<int>(type: "INTEGER", nullable: false),
-                    StreamType = table.Column<string>(type: "TEXT", nullable: true),
+                    StreamType = table.Column<int>(type: "INTEGER", nullable: true),
                     Codec = table.Column<string>(type: "TEXT", nullable: true),
                     Language = table.Column<string>(type: "TEXT", nullable: true),
                     ChannelLayout = table.Column<string>(type: "TEXT", nullable: true),
@@ -316,15 +378,49 @@ namespace Jellyfin.Server.Implementations.Migrations
                         onDelete: ReferentialAction.Cascade);
                 });
 
+            migrationBuilder.CreateTable(
+                name: "ItemValuesMap",
+                columns: table => new
+                {
+                    ItemId = table.Column<Guid>(type: "TEXT", nullable: false),
+                    ItemValueId = table.Column<Guid>(type: "TEXT", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_ItemValuesMap", x => new { x.ItemValueId, x.ItemId });
+                    table.ForeignKey(
+                        name: "FK_ItemValuesMap_BaseItems_ItemId",
+                        column: x => x.ItemId,
+                        principalTable: "BaseItems",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_ItemValuesMap_ItemValues_ItemValueId",
+                        column: x => x.ItemValueId,
+                        principalTable: "ItemValues",
+                        principalColumn: "ItemValueId",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
             migrationBuilder.CreateIndex(
-                name: "IX_AncestorIds_Id",
+                name: "IX_AncestorIds_BaseItemEntityId",
                 table: "AncestorIds",
-                column: "Id");
+                column: "BaseItemEntityId");
 
             migrationBuilder.CreateIndex(
-                name: "IX_AncestorIds_ItemId_AncestorIdText",
+                name: "IX_AncestorIds_ParentItemId",
                 table: "AncestorIds",
-                columns: new[] { "ItemId", "AncestorIdText" });
+                column: "ParentItemId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_BaseItemImageInfos_ItemId",
+                table: "BaseItemImageInfos",
+                column: "ItemId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_BaseItemMetadataFields_ItemId",
+                table: "BaseItemMetadataFields",
+                column: "ItemId");
 
             migrationBuilder.CreateIndex(
                 name: "IX_BaseItemProviders_ProviderId_ProviderValue_ItemId",
@@ -402,9 +498,19 @@ namespace Jellyfin.Server.Implementations.Migrations
                 columns: new[] { "UserDataKey", "Type" });
 
             migrationBuilder.CreateIndex(
-                name: "IX_ItemValues_ItemId_Type_CleanValue",
+                name: "IX_BaseItemTrailerTypes_ItemId",
+                table: "BaseItemTrailerTypes",
+                column: "ItemId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_ItemValues_Type_CleanValue",
                 table: "ItemValues",
-                columns: new[] { "ItemId", "Type", "CleanValue" });
+                columns: new[] { "Type", "CleanValue" });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_ItemValuesMap_ItemId",
+                table: "ItemValuesMap",
+                column: "ItemId");
 
             migrationBuilder.CreateIndex(
                 name: "IX_MediaStreamInfos_StreamIndex",
@@ -476,14 +582,23 @@ namespace Jellyfin.Server.Implementations.Migrations
             migrationBuilder.DropTable(
                 name: "AttachmentStreamInfos");
 
+            migrationBuilder.DropTable(
+                name: "BaseItemImageInfos");
+
+            migrationBuilder.DropTable(
+                name: "BaseItemMetadataFields");
+
             migrationBuilder.DropTable(
                 name: "BaseItemProviders");
 
+            migrationBuilder.DropTable(
+                name: "BaseItemTrailerTypes");
+
             migrationBuilder.DropTable(
                 name: "Chapters");
 
             migrationBuilder.DropTable(
-                name: "ItemValues");
+                name: "ItemValuesMap");
 
             migrationBuilder.DropTable(
                 name: "MediaStreamInfos");
@@ -494,6 +609,9 @@ namespace Jellyfin.Server.Implementations.Migrations
             migrationBuilder.DropTable(
                 name: "UserData");
 
+            migrationBuilder.DropTable(
+                name: "ItemValues");
+
             migrationBuilder.DropTable(
                 name: "BaseItems");
         }