// 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("20241020103111_LibraryDbMigration")] partial class LibraryDbMigration { /// 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("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("DayOfWeek") .HasColumnType("INTEGER"); b.Property("EndHour") .HasColumnType("REAL"); b.Property("StartHour") .HasColumnType("REAL"); b.Property("UserId") .HasColumnType("TEXT"); b.HasKey("Id"); b.HasIndex("UserId"); b.ToTable("AccessSchedules"); }); modelBuilder.Entity("Jellyfin.Data.Entities.ActivityLog", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("DateCreated") .HasColumnType("TEXT"); b.Property("ItemId") .HasMaxLength(256) .HasColumnType("TEXT"); b.Property("LogSeverity") .HasColumnType("INTEGER"); b.Property("Name") .IsRequired() .HasMaxLength(512) .HasColumnType("TEXT"); b.Property("Overview") .HasMaxLength(512) .HasColumnType("TEXT"); b.Property("RowVersion") .IsConcurrencyToken() .HasColumnType("INTEGER"); b.Property("ShortOverview") .HasMaxLength(512) .HasColumnType("TEXT"); b.Property("Type") .IsRequired() .HasMaxLength(256) .HasColumnType("TEXT"); b.Property("UserId") .HasColumnType("TEXT"); b.HasKey("Id"); b.HasIndex("DateCreated"); b.ToTable("ActivityLogs"); }); modelBuilder.Entity("Jellyfin.Data.Entities.AncestorId", b => { b.Property("ItemId") .HasColumnType("TEXT"); b.Property("ParentItemId") .HasColumnType("TEXT"); b.Property("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("ItemId") .HasColumnType("TEXT"); b.Property("Index") .HasColumnType("INTEGER"); b.Property("Codec") .IsRequired() .HasColumnType("TEXT"); b.Property("CodecTag") .HasColumnType("TEXT"); b.Property("Comment") .HasColumnType("TEXT"); b.Property("Filename") .HasColumnType("TEXT"); b.Property("MimeType") .HasColumnType("TEXT"); b.HasKey("ItemId", "Index"); b.ToTable("AttachmentStreamInfos"); }); modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemEntity", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("TEXT"); b.Property("Album") .HasColumnType("TEXT"); b.Property("AlbumArtists") .HasColumnType("TEXT"); b.Property("Artists") .HasColumnType("TEXT"); b.Property("Audio") .HasColumnType("INTEGER"); b.Property("ChannelId") .HasColumnType("TEXT"); b.Property("CleanName") .HasColumnType("TEXT"); b.Property("CommunityRating") .HasColumnType("REAL"); b.Property("CriticRating") .HasColumnType("REAL"); b.Property("CustomRating") .HasColumnType("TEXT"); b.Property("Data") .HasColumnType("TEXT"); b.Property("DateCreated") .HasColumnType("TEXT"); b.Property("DateLastMediaAdded") .HasColumnType("TEXT"); b.Property("DateLastRefreshed") .HasColumnType("TEXT"); b.Property("DateLastSaved") .HasColumnType("TEXT"); b.Property("DateModified") .HasColumnType("TEXT"); b.Property("EndDate") .HasColumnType("TEXT"); b.Property("EpisodeTitle") .HasColumnType("TEXT"); b.Property("ExternalId") .HasColumnType("TEXT"); b.Property("ExternalSeriesId") .HasColumnType("TEXT"); b.Property("ExternalServiceId") .HasColumnType("TEXT"); b.Property("ExtraIds") .HasColumnType("TEXT"); b.Property("ExtraType") .HasColumnType("INTEGER"); b.Property("ForcedSortName") .HasColumnType("TEXT"); b.Property("Genres") .HasColumnType("TEXT"); b.Property("Height") .HasColumnType("INTEGER"); b.Property("IndexNumber") .HasColumnType("INTEGER"); b.Property("InheritedParentalRatingValue") .HasColumnType("INTEGER"); b.Property("IsFolder") .HasColumnType("INTEGER"); b.Property("IsInMixedFolder") .HasColumnType("INTEGER"); b.Property("IsLocked") .HasColumnType("INTEGER"); b.Property("IsMovie") .HasColumnType("INTEGER"); b.Property("IsRepeat") .HasColumnType("INTEGER"); b.Property("IsSeries") .HasColumnType("INTEGER"); b.Property("IsVirtualItem") .HasColumnType("INTEGER"); b.Property("LUFS") .HasColumnType("REAL"); b.Property("MediaType") .HasColumnType("TEXT"); b.Property("Name") .HasColumnType("TEXT"); b.Property("NormalizationGain") .HasColumnType("REAL"); b.Property("OfficialRating") .HasColumnType("TEXT"); b.Property("OriginalTitle") .HasColumnType("TEXT"); b.Property("Overview") .HasColumnType("TEXT"); b.Property("OwnerId") .HasColumnType("TEXT"); b.Property("ParentId") .HasColumnType("TEXT"); b.Property("ParentIndexNumber") .HasColumnType("INTEGER"); b.Property("Path") .HasColumnType("TEXT"); b.Property("PreferredMetadataCountryCode") .HasColumnType("TEXT"); b.Property("PreferredMetadataLanguage") .HasColumnType("TEXT"); b.Property("PremiereDate") .HasColumnType("TEXT"); b.Property("PresentationUniqueKey") .HasColumnType("TEXT"); b.Property("PrimaryVersionId") .HasColumnType("TEXT"); b.Property("ProductionLocations") .HasColumnType("TEXT"); b.Property("ProductionYear") .HasColumnType("INTEGER"); b.Property("RunTimeTicks") .HasColumnType("INTEGER"); b.Property("SeasonId") .HasColumnType("TEXT"); b.Property("SeasonName") .HasColumnType("TEXT"); b.Property("SeriesId") .HasColumnType("TEXT"); b.Property("SeriesName") .HasColumnType("TEXT"); b.Property("SeriesPresentationUniqueKey") .HasColumnType("TEXT"); b.Property("ShowId") .HasColumnType("TEXT"); b.Property("Size") .HasColumnType("INTEGER"); b.Property("SortName") .HasColumnType("TEXT"); b.Property("StartDate") .HasColumnType("TEXT"); b.Property("Studios") .HasColumnType("TEXT"); b.Property("Tagline") .HasColumnType("TEXT"); b.Property("Tags") .HasColumnType("TEXT"); b.Property("TopParentId") .HasColumnType("TEXT"); b.Property("TotalBitrate") .HasColumnType("INTEGER"); b.Property("Type") .IsRequired() .HasColumnType("TEXT"); b.Property("UnratedType") .HasColumnType("TEXT"); b.Property("Width") .HasColumnType("INTEGER"); b.HasKey("Id"); b.HasIndex("ParentId"); b.HasIndex("Path"); b.HasIndex("PresentationUniqueKey"); b.HasIndex("TopParentId", "Id"); 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("Id") .ValueGeneratedOnAdd() .HasColumnType("TEXT"); b.Property("Blurhash") .HasColumnType("BLOB"); b.Property("DateModified") .HasColumnType("TEXT"); b.Property("Height") .HasColumnType("INTEGER"); b.Property("ImageType") .HasColumnType("INTEGER"); b.Property("ItemId") .HasColumnType("TEXT"); b.Property("Path") .IsRequired() .HasColumnType("TEXT"); b.Property("Width") .HasColumnType("INTEGER"); b.HasKey("Id"); b.HasIndex("ItemId"); b.ToTable("BaseItemImageInfos"); }); modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemMetadataField", b => { b.Property("Id") .HasColumnType("INTEGER"); b.Property("ItemId") .HasColumnType("TEXT"); b.HasKey("Id", "ItemId"); b.HasIndex("ItemId"); b.ToTable("BaseItemMetadataFields"); }); modelBuilder.Entity("Jellyfin.Data.Entities.BaseItemProvider", b => { b.Property("ItemId") .HasColumnType("TEXT"); b.Property("ProviderId") .HasColumnType("TEXT"); b.Property("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("Id") .HasColumnType("INTEGER"); b.Property("ItemId") .HasColumnType("TEXT"); b.HasKey("Id", "ItemId"); b.HasIndex("ItemId"); b.ToTable("BaseItemTrailerTypes"); }); modelBuilder.Entity("Jellyfin.Data.Entities.Chapter", b => { b.Property("ItemId") .HasColumnType("TEXT"); b.Property("ChapterIndex") .HasColumnType("INTEGER"); b.Property("ImageDateModified") .HasColumnType("TEXT"); b.Property("ImagePath") .HasColumnType("TEXT"); b.Property("Name") .HasColumnType("TEXT"); b.Property("StartPositionTicks") .HasColumnType("INTEGER"); b.HasKey("ItemId", "ChapterIndex"); b.ToTable("Chapters"); }); modelBuilder.Entity("Jellyfin.Data.Entities.CustomItemDisplayPreferences", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("Client") .IsRequired() .HasMaxLength(32) .HasColumnType("TEXT"); b.Property("ItemId") .HasColumnType("TEXT"); b.Property("Key") .IsRequired() .HasColumnType("TEXT"); b.Property("UserId") .HasColumnType("TEXT"); b.Property("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("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("ChromecastVersion") .HasColumnType("INTEGER"); b.Property("Client") .IsRequired() .HasMaxLength(32) .HasColumnType("TEXT"); b.Property("DashboardTheme") .HasMaxLength(32) .HasColumnType("TEXT"); b.Property("EnableNextVideoInfoOverlay") .HasColumnType("INTEGER"); b.Property("IndexBy") .HasColumnType("INTEGER"); b.Property("ItemId") .HasColumnType("TEXT"); b.Property("ScrollDirection") .HasColumnType("INTEGER"); b.Property("ShowBackdrop") .HasColumnType("INTEGER"); b.Property("ShowSidebar") .HasColumnType("INTEGER"); b.Property("SkipBackwardLength") .HasColumnType("INTEGER"); b.Property("SkipForwardLength") .HasColumnType("INTEGER"); b.Property("TvHome") .HasMaxLength(32) .HasColumnType("TEXT"); b.Property("UserId") .HasColumnType("TEXT"); b.HasKey("Id"); b.HasIndex("UserId", "ItemId", "Client") .IsUnique(); b.ToTable("DisplayPreferences"); }); modelBuilder.Entity("Jellyfin.Data.Entities.HomeSection", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("DisplayPreferencesId") .HasColumnType("INTEGER"); b.Property("Order") .HasColumnType("INTEGER"); b.Property("Type") .HasColumnType("INTEGER"); b.HasKey("Id"); b.HasIndex("DisplayPreferencesId"); b.ToTable("HomeSection"); }); modelBuilder.Entity("Jellyfin.Data.Entities.ImageInfo", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("LastModified") .HasColumnType("TEXT"); b.Property("Path") .IsRequired() .HasMaxLength(512) .HasColumnType("TEXT"); b.Property("UserId") .HasColumnType("TEXT"); b.HasKey("Id"); b.HasIndex("UserId") .IsUnique(); b.ToTable("ImageInfos"); }); modelBuilder.Entity("Jellyfin.Data.Entities.ItemDisplayPreferences", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("Client") .IsRequired() .HasMaxLength(32) .HasColumnType("TEXT"); b.Property("IndexBy") .HasColumnType("INTEGER"); b.Property("ItemId") .HasColumnType("TEXT"); b.Property("RememberIndexing") .HasColumnType("INTEGER"); b.Property("RememberSorting") .HasColumnType("INTEGER"); b.Property("SortBy") .IsRequired() .HasMaxLength(64) .HasColumnType("TEXT"); b.Property("SortOrder") .HasColumnType("INTEGER"); b.Property("UserId") .HasColumnType("TEXT"); b.Property("ViewType") .HasColumnType("INTEGER"); b.HasKey("Id"); b.HasIndex("UserId"); b.ToTable("ItemDisplayPreferences"); }); modelBuilder.Entity("Jellyfin.Data.Entities.ItemValue", b => { b.Property("ItemValueId") .ValueGeneratedOnAdd() .HasColumnType("TEXT"); b.Property("CleanValue") .IsRequired() .HasColumnType("TEXT"); b.Property("Type") .HasColumnType("INTEGER"); b.Property("Value") .IsRequired() .HasColumnType("TEXT"); b.HasKey("ItemValueId"); b.HasIndex("Type", "CleanValue"); b.ToTable("ItemValues"); }); modelBuilder.Entity("Jellyfin.Data.Entities.ItemValueMap", b => { b.Property("ItemValueId") .HasColumnType("TEXT"); b.Property("ItemId") .HasColumnType("TEXT"); b.HasKey("ItemValueId", "ItemId"); b.HasIndex("ItemId"); b.ToTable("ItemValuesMap"); }); modelBuilder.Entity("Jellyfin.Data.Entities.MediaSegment", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("TEXT"); b.Property("EndTicks") .HasColumnType("INTEGER"); b.Property("ItemId") .HasColumnType("TEXT"); b.Property("SegmentProviderId") .IsRequired() .HasColumnType("TEXT"); b.Property("StartTicks") .HasColumnType("INTEGER"); b.Property("Type") .HasColumnType("INTEGER"); b.HasKey("Id"); b.ToTable("MediaSegments"); }); modelBuilder.Entity("Jellyfin.Data.Entities.MediaStreamInfo", b => { b.Property("ItemId") .HasColumnType("TEXT"); b.Property("StreamIndex") .HasColumnType("INTEGER"); b.Property("AspectRatio") .HasColumnType("TEXT"); b.Property("AverageFrameRate") .HasColumnType("REAL"); b.Property("BitDepth") .HasColumnType("INTEGER"); b.Property("BitRate") .HasColumnType("INTEGER"); b.Property("BlPresentFlag") .HasColumnType("INTEGER"); b.Property("ChannelLayout") .HasColumnType("TEXT"); b.Property("Channels") .HasColumnType("INTEGER"); b.Property("Codec") .HasColumnType("TEXT"); b.Property("CodecTag") .IsRequired() .HasColumnType("TEXT"); b.Property("CodecTimeBase") .IsRequired() .HasColumnType("TEXT"); b.Property("ColorPrimaries") .IsRequired() .HasColumnType("TEXT"); b.Property("ColorSpace") .IsRequired() .HasColumnType("TEXT"); b.Property("ColorTransfer") .IsRequired() .HasColumnType("TEXT"); b.Property("Comment") .IsRequired() .HasColumnType("TEXT"); b.Property("DvBlSignalCompatibilityId") .HasColumnType("INTEGER"); b.Property("DvLevel") .HasColumnType("INTEGER"); b.Property("DvProfile") .HasColumnType("INTEGER"); b.Property("DvVersionMajor") .HasColumnType("INTEGER"); b.Property("DvVersionMinor") .HasColumnType("INTEGER"); b.Property("ElPresentFlag") .HasColumnType("INTEGER"); b.Property("Height") .HasColumnType("INTEGER"); b.Property("IsAnamorphic") .HasColumnType("INTEGER"); b.Property("IsAvc") .HasColumnType("INTEGER"); b.Property("IsDefault") .HasColumnType("INTEGER"); b.Property("IsExternal") .HasColumnType("INTEGER"); b.Property("IsForced") .HasColumnType("INTEGER"); b.Property("IsHearingImpaired") .HasColumnType("INTEGER"); b.Property("IsInterlaced") .HasColumnType("INTEGER"); b.Property("KeyFrames") .HasColumnType("TEXT"); b.Property("Language") .HasColumnType("TEXT"); b.Property("Level") .HasColumnType("REAL"); b.Property("NalLengthSize") .IsRequired() .HasColumnType("TEXT"); b.Property("Path") .HasColumnType("TEXT"); b.Property("PixelFormat") .HasColumnType("TEXT"); b.Property("Profile") .HasColumnType("TEXT"); b.Property("RealFrameRate") .HasColumnType("REAL"); b.Property("RefFrames") .HasColumnType("INTEGER"); b.Property("Rotation") .HasColumnType("INTEGER"); b.Property("RpuPresentFlag") .HasColumnType("INTEGER"); b.Property("SampleRate") .HasColumnType("INTEGER"); b.Property("StreamType") .HasColumnType("INTEGER"); b.Property("TimeBase") .IsRequired() .HasColumnType("TEXT"); b.Property("Title") .IsRequired() .HasColumnType("TEXT"); b.Property("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("Id") .ValueGeneratedOnAdd() .HasColumnType("TEXT"); b.Property("Name") .IsRequired() .HasColumnType("TEXT"); b.Property("PersonType") .HasColumnType("TEXT"); b.HasKey("Id"); b.HasIndex("Name"); b.ToTable("Peoples"); }); modelBuilder.Entity("Jellyfin.Data.Entities.PeopleBaseItemMap", b => { b.Property("ItemId") .HasColumnType("TEXT"); b.Property("PeopleId") .HasColumnType("TEXT"); b.Property("ListOrder") .HasColumnType("INTEGER"); b.Property("Role") .HasColumnType("TEXT"); b.Property("SortOrder") .HasColumnType("INTEGER"); b.HasKey("ItemId", "PeopleId"); b.HasIndex("PeopleId"); b.HasIndex("ItemId", "ListOrder"); b.HasIndex("ItemId", "SortOrder"); b.ToTable("PeopleBaseItemMap"); }); modelBuilder.Entity("Jellyfin.Data.Entities.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("Kind") .HasColumnType("INTEGER"); b.Property("Permission_Permissions_Guid") .HasColumnType("TEXT"); b.Property("RowVersion") .IsConcurrencyToken() .HasColumnType("INTEGER"); b.Property("UserId") .HasColumnType("TEXT"); b.Property("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("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("Kind") .HasColumnType("INTEGER"); b.Property("Preference_Preferences_Guid") .HasColumnType("TEXT"); b.Property("RowVersion") .IsConcurrencyToken() .HasColumnType("INTEGER"); b.Property("UserId") .HasColumnType("TEXT"); b.Property("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("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("AccessToken") .IsRequired() .HasColumnType("TEXT"); b.Property("DateCreated") .HasColumnType("TEXT"); b.Property("DateLastActivity") .HasColumnType("TEXT"); b.Property("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("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("AccessToken") .IsRequired() .HasColumnType("TEXT"); b.Property("AppName") .IsRequired() .HasMaxLength(64) .HasColumnType("TEXT"); b.Property("AppVersion") .IsRequired() .HasMaxLength(32) .HasColumnType("TEXT"); b.Property("DateCreated") .HasColumnType("TEXT"); b.Property("DateLastActivity") .HasColumnType("TEXT"); b.Property("DateModified") .HasColumnType("TEXT"); b.Property("DeviceId") .IsRequired() .HasMaxLength(256) .HasColumnType("TEXT"); b.Property("DeviceName") .IsRequired() .HasMaxLength(64) .HasColumnType("TEXT"); b.Property("IsActive") .HasColumnType("INTEGER"); b.Property("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("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("CustomName") .HasColumnType("TEXT"); b.Property("DeviceId") .IsRequired() .HasColumnType("TEXT"); b.HasKey("Id"); b.HasIndex("DeviceId") .IsUnique(); b.ToTable("DeviceOptions"); }); modelBuilder.Entity("Jellyfin.Data.Entities.TrickplayInfo", b => { b.Property("ItemId") .HasColumnType("TEXT"); b.Property("Width") .HasColumnType("INTEGER"); b.Property("Bandwidth") .HasColumnType("INTEGER"); b.Property("Height") .HasColumnType("INTEGER"); b.Property("Interval") .HasColumnType("INTEGER"); b.Property("ThumbnailCount") .HasColumnType("INTEGER"); b.Property("TileHeight") .HasColumnType("INTEGER"); b.Property("TileWidth") .HasColumnType("INTEGER"); b.HasKey("ItemId", "Width"); b.ToTable("TrickplayInfos"); }); modelBuilder.Entity("Jellyfin.Data.Entities.User", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("TEXT"); b.Property("AudioLanguagePreference") .HasMaxLength(255) .HasColumnType("TEXT"); b.Property("AuthenticationProviderId") .IsRequired() .HasMaxLength(255) .HasColumnType("TEXT"); b.Property("CastReceiverId") .HasMaxLength(32) .HasColumnType("TEXT"); b.Property("DisplayCollectionsView") .HasColumnType("INTEGER"); b.Property("DisplayMissingEpisodes") .HasColumnType("INTEGER"); b.Property("EnableAutoLogin") .HasColumnType("INTEGER"); b.Property("EnableLocalPassword") .HasColumnType("INTEGER"); b.Property("EnableNextEpisodeAutoPlay") .HasColumnType("INTEGER"); b.Property("EnableUserPreferenceAccess") .HasColumnType("INTEGER"); b.Property("HidePlayedInLatest") .HasColumnType("INTEGER"); b.Property("InternalId") .HasColumnType("INTEGER"); b.Property("InvalidLoginAttemptCount") .HasColumnType("INTEGER"); b.Property("LastActivityDate") .HasColumnType("TEXT"); b.Property("LastLoginDate") .HasColumnType("TEXT"); b.Property("LoginAttemptsBeforeLockout") .HasColumnType("INTEGER"); b.Property("MaxActiveSessions") .HasColumnType("INTEGER"); b.Property("MaxParentalAgeRating") .HasColumnType("INTEGER"); b.Property("MustUpdatePassword") .HasColumnType("INTEGER"); b.Property("Password") .HasMaxLength(65535) .HasColumnType("TEXT"); b.Property("PasswordResetProviderId") .IsRequired() .HasMaxLength(255) .HasColumnType("TEXT"); b.Property("PlayDefaultAudioTrack") .HasColumnType("INTEGER"); b.Property("RememberAudioSelections") .HasColumnType("INTEGER"); b.Property("RememberSubtitleSelections") .HasColumnType("INTEGER"); b.Property("RemoteClientBitrateLimit") .HasColumnType("INTEGER"); b.Property("RowVersion") .IsConcurrencyToken() .HasColumnType("INTEGER"); b.Property("SubtitleLanguagePreference") .HasMaxLength(255) .HasColumnType("TEXT"); b.Property("SubtitleMode") .HasColumnType("INTEGER"); b.Property("SyncPlayAccess") .HasColumnType("INTEGER"); b.Property("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("ItemId") .HasColumnType("TEXT"); b.Property("UserId") .HasColumnType("TEXT"); b.Property("AudioStreamIndex") .HasColumnType("INTEGER"); b.Property("IsFavorite") .HasColumnType("INTEGER"); b.Property("LastPlayedDate") .HasColumnType("TEXT"); b.Property("Likes") .HasColumnType("INTEGER"); b.Property("PlayCount") .HasColumnType("INTEGER"); b.Property("PlaybackPositionTicks") .HasColumnType("INTEGER"); b.Property("Played") .HasColumnType("INTEGER"); b.Property("Rating") .HasColumnType("REAL"); b.Property("SubtitleStreamIndex") .HasColumnType("INTEGER"); b.HasKey("ItemId", "UserId"); b.HasIndex("UserId"); b.HasIndex("ItemId", "UserId", "IsFavorite"); b.HasIndex("ItemId", "UserId", "LastPlayedDate"); b.HasIndex("ItemId", "UserId", "PlaybackPositionTicks"); b.HasIndex("ItemId", "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"); b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item") .WithMany() .HasForeignKey("ItemId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "ParentItem") .WithMany() .HasForeignKey("ParentItemId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Item"); b.Navigation("ParentItem"); }); 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.ItemValueMap", b => { b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item") .WithMany("ItemValues") .HasForeignKey("ItemId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Jellyfin.Data.Entities.ItemValue", "ItemValue") .WithMany("BaseItemsMap") .HasForeignKey("ItemValueId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Item"); b.Navigation("ItemValue"); }); 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.PeopleBaseItemMap", b => { b.HasOne("Jellyfin.Data.Entities.BaseItemEntity", "Item") .WithMany("Peoples") .HasForeignKey("ItemId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Jellyfin.Data.Entities.People", "People") .WithMany("BaseItems") .HasForeignKey("PeopleId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Item"); b.Navigation("People"); }); 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", "Item") .WithMany("UserData") .HasForeignKey("ItemId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Jellyfin.Data.Entities.User", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Item"); 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.ItemValue", b => { b.Navigation("BaseItemsMap"); }); modelBuilder.Entity("Jellyfin.Data.Entities.People", b => { b.Navigation("BaseItems"); }); 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 } } }