< Summary - Jellyfin

Line coverage
98%
Covered lines: 1758
Uncovered lines: 31
Coverable lines: 1789
Total lines: 1902
Line coverage: 98.2%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100 5/4/2026 - 12:15:16 AM Line coverage: 98.5% (1731/1756) Total lines: 18635/22/2026 - 12:15:17 AM Line coverage: 98.2% (1758/1789) Total lines: 1902

Coverage delta

Coverage delta 1 -1

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
File 1: Up(...)100%11100%
File 1: Down(...)100%210%
File 2: BuildTargetModel(...)100%11100%

File(s)

/srv/git/jellyfin/src/Jellyfin.Database/Jellyfin.Database.Providers.Sqlite/Migrations/20260113233000_AddForeignKeyToOwnerId.cs

#LineLine coverage
 1using System;
 2using Microsoft.EntityFrameworkCore.Migrations;
 3
 4#nullable disable
 5
 6namespace Jellyfin.Database.Providers.Sqlite.Migrations
 7{
 8    /// <inheritdoc />
 9    public partial class AddForeignKeyToOwnerId : Migration
 10    {
 11        /// <inheritdoc />
 12        protected override void Up(MigrationBuilder migrationBuilder)
 13        {
 2114            migrationBuilder.DropForeignKey(
 2115                name: "FK_BaseItems_BaseItems_BaseItemEntityId",
 2116                table: "BaseItems");
 17
 2118            migrationBuilder.DropIndex(
 2119                name: "IX_BaseItems_BaseItemEntityId",
 2120                table: "BaseItems");
 21
 2122            migrationBuilder.DropColumn(
 2123                name: "BaseItemEntityId",
 2124                table: "BaseItems");
 25
 2126            migrationBuilder.Sql(
 2127                """
 2128                UPDATE BaseItems
 2129                SET OwnerId = '00000000-0000-0000-0000-000000000001'
 2130                WHERE OwnerId IS NOT NULL
 2131                  AND OwnerId NOT IN (SELECT Id FROM BaseItems);
 2132                """);
 33
 2134            migrationBuilder.AddForeignKey(
 2135                name: "FK_BaseItems_BaseItems_OwnerId",
 2136                table: "BaseItems",
 2137                column: "OwnerId",
 2138                principalTable: "BaseItems",
 2139                principalColumn: "Id");
 40
 2141            migrationBuilder.AddColumn<bool>(
 2142                name: "IsOriginal",
 2143                table: "MediaStreamInfos",
 2144                type: "INTEGER",
 2145                nullable: false,
 2146                defaultValue: false);
 47
 2148            migrationBuilder.AddColumn<string>(
 2149                name: "OriginalLanguage",
 2150                table: "BaseItems",
 2151                type: "TEXT",
 2152                nullable: true);
 53
 2154            migrationBuilder.UpdateData(
 2155                table: "BaseItems",
 2156                keyColumn: "Id",
 2157                keyValue: new Guid("00000000-0000-0000-0000-000000000001"),
 2158                column: "OriginalLanguage",
 2159                value: null);
 2160        }
 61
 62        /// <inheritdoc />
 63        protected override void Down(MigrationBuilder migrationBuilder)
 64        {
 065            migrationBuilder.DropForeignKey(
 066                name: "FK_BaseItems_BaseItems_OwnerId",
 067                table: "BaseItems");
 68
 069            migrationBuilder.AddColumn<Guid>(
 070                name: "BaseItemEntityId",
 071                table: "BaseItems",
 072                type: "TEXT",
 073                nullable: true);
 74
 075            migrationBuilder.UpdateData(
 076                table: "BaseItems",
 077                keyColumn: "Id",
 078                keyValue: new Guid("00000000-0000-0000-0000-000000000001"),
 079                column: "BaseItemEntityId",
 080                value: null);
 81
 082            migrationBuilder.CreateIndex(
 083                name: "IX_BaseItems_BaseItemEntityId",
 084                table: "BaseItems",
 085                column: "BaseItemEntityId");
 86
 087            migrationBuilder.AddForeignKey(
 088                name: "FK_BaseItems_BaseItems_BaseItemEntityId",
 089                table: "BaseItems",
 090                column: "BaseItemEntityId",
 091                principalTable: "BaseItems",
 092                principalColumn: "Id");
 93
 094            migrationBuilder.DropColumn(
 095                name: "IsOriginal",
 096                table: "MediaStreamInfos");
 97
 098            migrationBuilder.DropColumn(
 099                name: "OriginalLanguage",
 0100                table: "BaseItems");
 0101        }
 102    }
 103}

/srv/git/jellyfin/src/Jellyfin.Database/Jellyfin.Database.Providers.Sqlite/Migrations/20260113233000_AddForeignKeyToOwnerId.Designer.cs

#LineLine coverage
 1// <auto-generated />
 2using System;
 3using Jellyfin.Database.Implementations;
 4using Microsoft.EntityFrameworkCore;
 5using Microsoft.EntityFrameworkCore.Infrastructure;
 6using Microsoft.EntityFrameworkCore.Migrations;
 7using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
 8
 9#nullable disable
 10
 11namespace Jellyfin.Database.Providers.Sqlite.Migrations
 12{
 13    [DbContext(typeof(JellyfinDbContext))]
 14    [Migration("20260113233000_AddForeignKeyToOwnerId")]
 15    partial class AddForeignKeyToOwnerId
 16    {
 17        /// <inheritdoc />
 18        protected override void BuildTargetModel(ModelBuilder modelBuilder)
 19        {
 20#pragma warning disable 612, 618
 2121            modelBuilder.HasAnnotation("ProductVersion", "10.0.2");
 22
 2123            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.AccessSchedule", b =>
 2124                {
 2125                    b.Property<int>("Id")
 2126                        .ValueGeneratedOnAdd()
 2127                        .HasColumnType("INTEGER");
 2128
 2129                    b.Property<int>("DayOfWeek")
 2130                        .HasColumnType("INTEGER");
 2131
 2132                    b.Property<double>("EndHour")
 2133                        .HasColumnType("REAL");
 2134
 2135                    b.Property<double>("StartHour")
 2136                        .HasColumnType("REAL");
 2137
 2138                    b.Property<Guid>("UserId")
 2139                        .HasColumnType("TEXT");
 2140
 2141                    b.HasKey("Id");
 2142
 2143                    b.HasIndex("UserId");
 2144
 2145                    b.ToTable("AccessSchedules");
 2146
 2147                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 2148                });
 49
 2150            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ActivityLog", b =>
 2151                {
 2152                    b.Property<int>("Id")
 2153                        .ValueGeneratedOnAdd()
 2154                        .HasColumnType("INTEGER");
 2155
 2156                    b.Property<DateTime>("DateCreated")
 2157                        .HasColumnType("TEXT");
 2158
 2159                    b.Property<string>("ItemId")
 2160                        .HasMaxLength(256)
 2161                        .HasColumnType("TEXT");
 2162
 2163                    b.Property<int>("LogSeverity")
 2164                        .HasColumnType("INTEGER");
 2165
 2166                    b.Property<string>("Name")
 2167                        .IsRequired()
 2168                        .HasMaxLength(512)
 2169                        .HasColumnType("TEXT");
 2170
 2171                    b.Property<string>("Overview")
 2172                        .HasMaxLength(512)
 2173                        .HasColumnType("TEXT");
 2174
 2175                    b.Property<uint>("RowVersion")
 2176                        .IsConcurrencyToken()
 2177                        .HasColumnType("INTEGER");
 2178
 2179                    b.Property<string>("ShortOverview")
 2180                        .HasMaxLength(512)
 2181                        .HasColumnType("TEXT");
 2182
 2183                    b.Property<string>("Type")
 2184                        .IsRequired()
 2185                        .HasMaxLength(256)
 2186                        .HasColumnType("TEXT");
 2187
 2188                    b.Property<Guid>("UserId")
 2189                        .HasColumnType("TEXT");
 2190
 2191                    b.HasKey("Id");
 2192
 2193                    b.HasIndex("DateCreated");
 2194
 2195                    b.ToTable("ActivityLogs");
 2196
 2197                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 2198                });
 99
 21100            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.AncestorId", b =>
 21101                {
 21102                    b.Property<Guid>("ItemId")
 21103                        .HasColumnType("TEXT");
 21104
 21105                    b.Property<Guid>("ParentItemId")
 21106                        .HasColumnType("TEXT");
 21107
 21108                    b.HasKey("ItemId", "ParentItemId");
 21109
 21110                    b.HasIndex("ParentItemId");
 21111
 21112                    b.ToTable("AncestorIds");
 21113
 21114                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21115                });
 116
 21117            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.AttachmentStreamInfo", b =>
 21118                {
 21119                    b.Property<Guid>("ItemId")
 21120                        .HasColumnType("TEXT");
 21121
 21122                    b.Property<int>("Index")
 21123                        .HasColumnType("INTEGER");
 21124
 21125                    b.Property<string>("Codec")
 21126                        .HasColumnType("TEXT");
 21127
 21128                    b.Property<string>("CodecTag")
 21129                        .HasColumnType("TEXT");
 21130
 21131                    b.Property<string>("Comment")
 21132                        .HasColumnType("TEXT");
 21133
 21134                    b.Property<string>("Filename")
 21135                        .HasColumnType("TEXT");
 21136
 21137                    b.Property<string>("MimeType")
 21138                        .HasColumnType("TEXT");
 21139
 21140                    b.HasKey("ItemId", "Index");
 21141
 21142                    b.ToTable("AttachmentStreamInfos");
 21143
 21144                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21145                });
 146
 21147            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemEntity", b =>
 21148                {
 21149                    b.Property<Guid>("Id")
 21150                        .ValueGeneratedOnAdd()
 21151                        .HasColumnType("TEXT");
 21152
 21153                    b.Property<string>("Album")
 21154                        .HasColumnType("TEXT");
 21155
 21156                    b.Property<string>("AlbumArtists")
 21157                        .HasColumnType("TEXT");
 21158
 21159                    b.Property<string>("Artists")
 21160                        .HasColumnType("TEXT");
 21161
 21162                    b.Property<int?>("Audio")
 21163                        .HasColumnType("INTEGER");
 21164
 21165                    b.Property<Guid?>("ChannelId")
 21166                        .HasColumnType("TEXT");
 21167
 21168                    b.Property<string>("CleanName")
 21169                        .HasColumnType("TEXT");
 21170
 21171                    b.Property<float?>("CommunityRating")
 21172                        .HasColumnType("REAL");
 21173
 21174                    b.Property<float?>("CriticRating")
 21175                        .HasColumnType("REAL");
 21176
 21177                    b.Property<string>("CustomRating")
 21178                        .HasColumnType("TEXT");
 21179
 21180                    b.Property<string>("Data")
 21181                        .HasColumnType("TEXT");
 21182
 21183                    b.Property<DateTime?>("DateCreated")
 21184                        .HasColumnType("TEXT");
 21185
 21186                    b.Property<DateTime?>("DateLastMediaAdded")
 21187                        .HasColumnType("TEXT");
 21188
 21189                    b.Property<DateTime?>("DateLastRefreshed")
 21190                        .HasColumnType("TEXT");
 21191
 21192                    b.Property<DateTime?>("DateLastSaved")
 21193                        .HasColumnType("TEXT");
 21194
 21195                    b.Property<DateTime?>("DateModified")
 21196                        .HasColumnType("TEXT");
 21197
 21198                    b.Property<DateTime?>("EndDate")
 21199                        .HasColumnType("TEXT");
 21200
 21201                    b.Property<string>("EpisodeTitle")
 21202                        .HasColumnType("TEXT");
 21203
 21204                    b.Property<string>("ExternalId")
 21205                        .HasColumnType("TEXT");
 21206
 21207                    b.Property<string>("ExternalSeriesId")
 21208                        .HasColumnType("TEXT");
 21209
 21210                    b.Property<string>("ExternalServiceId")
 21211                        .HasColumnType("TEXT");
 21212
 21213                    b.Property<string>("ExtraIds")
 21214                        .HasColumnType("TEXT");
 21215
 21216                    b.Property<int?>("ExtraType")
 21217                        .HasColumnType("INTEGER");
 21218
 21219                    b.Property<string>("ForcedSortName")
 21220                        .HasColumnType("TEXT");
 21221
 21222                    b.Property<string>("Genres")
 21223                        .HasColumnType("TEXT");
 21224
 21225                    b.Property<int?>("Height")
 21226                        .HasColumnType("INTEGER");
 21227
 21228                    b.Property<int?>("IndexNumber")
 21229                        .HasColumnType("INTEGER");
 21230
 21231                    b.Property<int?>("InheritedParentalRatingSubValue")
 21232                        .HasColumnType("INTEGER");
 21233
 21234                    b.Property<int?>("InheritedParentalRatingValue")
 21235                        .HasColumnType("INTEGER");
 21236
 21237                    b.Property<bool>("IsFolder")
 21238                        .HasColumnType("INTEGER");
 21239
 21240                    b.Property<bool>("IsInMixedFolder")
 21241                        .HasColumnType("INTEGER");
 21242
 21243                    b.Property<bool>("IsLocked")
 21244                        .HasColumnType("INTEGER");
 21245
 21246                    b.Property<bool>("IsMovie")
 21247                        .HasColumnType("INTEGER");
 21248
 21249                    b.Property<bool>("IsRepeat")
 21250                        .HasColumnType("INTEGER");
 21251
 21252                    b.Property<bool>("IsSeries")
 21253                        .HasColumnType("INTEGER");
 21254
 21255                    b.Property<bool>("IsVirtualItem")
 21256                        .HasColumnType("INTEGER");
 21257
 21258                    b.Property<float?>("LUFS")
 21259                        .HasColumnType("REAL");
 21260
 21261                    b.Property<string>("MediaType")
 21262                        .HasColumnType("TEXT");
 21263
 21264                    b.Property<string>("Name")
 21265                        .HasColumnType("TEXT");
 21266
 21267                    b.Property<float?>("NormalizationGain")
 21268                        .HasColumnType("REAL");
 21269
 21270                    b.Property<string>("OfficialRating")
 21271                        .HasColumnType("TEXT");
 21272
 21273                    b.Property<string>("OriginalLanguage")
 21274                        .HasColumnType("TEXT");
 21275
 21276                    b.Property<string>("OriginalTitle")
 21277                        .HasColumnType("TEXT");
 21278
 21279                    b.Property<string>("Overview")
 21280                        .HasColumnType("TEXT");
 21281
 21282                    b.Property<Guid?>("OwnerId")
 21283                        .HasColumnType("TEXT");
 21284
 21285                    b.Property<Guid?>("ParentId")
 21286                        .HasColumnType("TEXT");
 21287
 21288                    b.Property<int?>("ParentIndexNumber")
 21289                        .HasColumnType("INTEGER");
 21290
 21291                    b.Property<string>("Path")
 21292                        .HasColumnType("TEXT");
 21293
 21294                    b.Property<string>("PreferredMetadataCountryCode")
 21295                        .HasColumnType("TEXT");
 21296
 21297                    b.Property<string>("PreferredMetadataLanguage")
 21298                        .HasColumnType("TEXT");
 21299
 21300                    b.Property<DateTime?>("PremiereDate")
 21301                        .HasColumnType("TEXT");
 21302
 21303                    b.Property<string>("PresentationUniqueKey")
 21304                        .HasColumnType("TEXT");
 21305
 21306                    b.Property<string>("PrimaryVersionId")
 21307                        .HasColumnType("TEXT");
 21308
 21309                    b.Property<string>("ProductionLocations")
 21310                        .HasColumnType("TEXT");
 21311
 21312                    b.Property<int?>("ProductionYear")
 21313                        .HasColumnType("INTEGER");
 21314
 21315                    b.Property<long?>("RunTimeTicks")
 21316                        .HasColumnType("INTEGER");
 21317
 21318                    b.Property<Guid?>("SeasonId")
 21319                        .HasColumnType("TEXT");
 21320
 21321                    b.Property<string>("SeasonName")
 21322                        .HasColumnType("TEXT");
 21323
 21324                    b.Property<Guid?>("SeriesId")
 21325                        .HasColumnType("TEXT");
 21326
 21327                    b.Property<string>("SeriesName")
 21328                        .HasColumnType("TEXT");
 21329
 21330                    b.Property<string>("SeriesPresentationUniqueKey")
 21331                        .HasColumnType("TEXT");
 21332
 21333                    b.Property<string>("ShowId")
 21334                        .HasColumnType("TEXT");
 21335
 21336                    b.Property<long?>("Size")
 21337                        .HasColumnType("INTEGER");
 21338
 21339                    b.Property<string>("SortName")
 21340                        .HasColumnType("TEXT");
 21341
 21342                    b.Property<DateTime?>("StartDate")
 21343                        .HasColumnType("TEXT");
 21344
 21345                    b.Property<string>("Studios")
 21346                        .HasColumnType("TEXT");
 21347
 21348                    b.Property<string>("Tagline")
 21349                        .HasColumnType("TEXT");
 21350
 21351                    b.Property<string>("Tags")
 21352                        .HasColumnType("TEXT");
 21353
 21354                    b.Property<Guid?>("TopParentId")
 21355                        .HasColumnType("TEXT");
 21356
 21357                    b.Property<int?>("TotalBitrate")
 21358                        .HasColumnType("INTEGER");
 21359
 21360                    b.Property<string>("Type")
 21361                        .IsRequired()
 21362                        .HasColumnType("TEXT");
 21363
 21364                    b.Property<string>("UnratedType")
 21365                        .HasColumnType("TEXT");
 21366
 21367                    b.Property<int?>("Width")
 21368                        .HasColumnType("INTEGER");
 21369
 21370                    b.HasKey("Id");
 21371
 21372                    b.HasIndex("ExtraType");
 21373
 21374                    b.HasIndex("OwnerId");
 21375
 21376                    b.HasIndex("ParentId");
 21377
 21378                    b.HasIndex("Path");
 21379
 21380                    b.HasIndex("PresentationUniqueKey");
 21381
 21382                    b.HasIndex("ExtraType", "OwnerId");
 21383
 21384                    b.HasIndex("TopParentId", "Id");
 21385
 21386                    b.HasIndex("Type", "TopParentId", "Id");
 21387
 21388                    b.HasIndex("Type", "TopParentId", "PresentationUniqueKey");
 21389
 21390                    b.HasIndex("Type", "TopParentId", "StartDate");
 21391
 21392                    b.HasIndex("Id", "Type", "IsFolder", "IsVirtualItem");
 21393
 21394                    b.HasIndex("MediaType", "TopParentId", "IsVirtualItem", "PresentationUniqueKey");
 21395
 21396                    b.HasIndex("TopParentId", "IsFolder", "IsVirtualItem", "DateCreated");
 21397
 21398                    b.HasIndex("TopParentId", "MediaType", "IsVirtualItem", "DateCreated");
 21399
 21400                    b.HasIndex("TopParentId", "Type", "IsVirtualItem", "DateCreated");
 21401
 21402                    b.HasIndex("Type", "SeriesPresentationUniqueKey", "IsFolder", "IsVirtualItem");
 21403
 21404                    b.HasIndex("Type", "SeriesPresentationUniqueKey", "PresentationUniqueKey", "SortName");
 21405
 21406                    b.HasIndex("IsFolder", "TopParentId", "IsVirtualItem", "PresentationUniqueKey", "DateCreated");
 21407
 21408                    b.HasIndex("Type", "TopParentId", "IsVirtualItem", "PresentationUniqueKey", "DateCreated");
 21409
 21410                    b.ToTable("BaseItems");
 21411
 21412                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21413
 21414                    b.HasData(
 21415                        new
 21416                        {
 21417                            Id = new Guid("00000000-0000-0000-0000-000000000001"),
 21418                            IsFolder = false,
 21419                            IsInMixedFolder = false,
 21420                            IsLocked = false,
 21421                            IsMovie = false,
 21422                            IsRepeat = false,
 21423                            IsSeries = false,
 21424                            IsVirtualItem = false,
 21425                            Name = "This is a placeholder item for UserData that has been detached from its original ite
 21426                            Type = "PLACEHOLDER"
 21427                        });
 21428                });
 429
 21430            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemImageInfo", b =>
 21431                {
 21432                    b.Property<Guid>("Id")
 21433                        .ValueGeneratedOnAdd()
 21434                        .HasColumnType("TEXT");
 21435
 21436                    b.Property<byte[]>("Blurhash")
 21437                        .HasColumnType("BLOB");
 21438
 21439                    b.Property<DateTime?>("DateModified")
 21440                        .HasColumnType("TEXT");
 21441
 21442                    b.Property<int>("Height")
 21443                        .HasColumnType("INTEGER");
 21444
 21445                    b.Property<int>("ImageType")
 21446                        .HasColumnType("INTEGER");
 21447
 21448                    b.Property<Guid>("ItemId")
 21449                        .HasColumnType("TEXT");
 21450
 21451                    b.Property<string>("Path")
 21452                        .IsRequired()
 21453                        .HasColumnType("TEXT");
 21454
 21455                    b.Property<int>("Width")
 21456                        .HasColumnType("INTEGER");
 21457
 21458                    b.HasKey("Id");
 21459
 21460                    b.HasIndex("ItemId");
 21461
 21462                    b.ToTable("BaseItemImageInfos");
 21463
 21464                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21465                });
 466
 21467            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemMetadataField", b =>
 21468                {
 21469                    b.Property<int>("Id")
 21470                        .HasColumnType("INTEGER");
 21471
 21472                    b.Property<Guid>("ItemId")
 21473                        .HasColumnType("TEXT");
 21474
 21475                    b.HasKey("Id", "ItemId");
 21476
 21477                    b.HasIndex("ItemId");
 21478
 21479                    b.ToTable("BaseItemMetadataFields");
 21480
 21481                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21482                });
 483
 21484            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemProvider", b =>
 21485                {
 21486                    b.Property<Guid>("ItemId")
 21487                        .HasColumnType("TEXT");
 21488
 21489                    b.Property<string>("ProviderId")
 21490                        .HasColumnType("TEXT");
 21491
 21492                    b.Property<string>("ProviderValue")
 21493                        .IsRequired()
 21494                        .HasColumnType("TEXT");
 21495
 21496                    b.HasKey("ItemId", "ProviderId");
 21497
 21498                    b.HasIndex("ProviderId", "ProviderValue", "ItemId");
 21499
 21500                    b.ToTable("BaseItemProviders");
 21501
 21502                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21503                });
 504
 21505            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemTrailerType", b =>
 21506                {
 21507                    b.Property<int>("Id")
 21508                        .HasColumnType("INTEGER");
 21509
 21510                    b.Property<Guid>("ItemId")
 21511                        .HasColumnType("TEXT");
 21512
 21513                    b.HasKey("Id", "ItemId");
 21514
 21515                    b.HasIndex("ItemId");
 21516
 21517                    b.ToTable("BaseItemTrailerTypes");
 21518
 21519                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21520                });
 521
 21522            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Chapter", b =>
 21523                {
 21524                    b.Property<Guid>("ItemId")
 21525                        .HasColumnType("TEXT");
 21526
 21527                    b.Property<int>("ChapterIndex")
 21528                        .HasColumnType("INTEGER");
 21529
 21530                    b.Property<DateTime?>("ImageDateModified")
 21531                        .HasColumnType("TEXT");
 21532
 21533                    b.Property<string>("ImagePath")
 21534                        .HasColumnType("TEXT");
 21535
 21536                    b.Property<string>("Name")
 21537                        .HasColumnType("TEXT");
 21538
 21539                    b.Property<long>("StartPositionTicks")
 21540                        .HasColumnType("INTEGER");
 21541
 21542                    b.HasKey("ItemId", "ChapterIndex");
 21543
 21544                    b.ToTable("Chapters");
 21545
 21546                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21547                });
 548
 21549            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.CustomItemDisplayPreferences", b =>
 21550                {
 21551                    b.Property<int>("Id")
 21552                        .ValueGeneratedOnAdd()
 21553                        .HasColumnType("INTEGER");
 21554
 21555                    b.Property<string>("Client")
 21556                        .IsRequired()
 21557                        .HasMaxLength(32)
 21558                        .HasColumnType("TEXT");
 21559
 21560                    b.Property<Guid>("ItemId")
 21561                        .HasColumnType("TEXT");
 21562
 21563                    b.Property<string>("Key")
 21564                        .IsRequired()
 21565                        .HasColumnType("TEXT");
 21566
 21567                    b.Property<Guid>("UserId")
 21568                        .HasColumnType("TEXT");
 21569
 21570                    b.Property<string>("Value")
 21571                        .HasColumnType("TEXT");
 21572
 21573                    b.HasKey("Id");
 21574
 21575                    b.HasIndex("UserId", "ItemId", "Client", "Key")
 21576                        .IsUnique();
 21577
 21578                    b.ToTable("CustomItemDisplayPreferences");
 21579
 21580                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21581                });
 582
 21583            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.DisplayPreferences", b =>
 21584                {
 21585                    b.Property<int>("Id")
 21586                        .ValueGeneratedOnAdd()
 21587                        .HasColumnType("INTEGER");
 21588
 21589                    b.Property<int>("ChromecastVersion")
 21590                        .HasColumnType("INTEGER");
 21591
 21592                    b.Property<string>("Client")
 21593                        .IsRequired()
 21594                        .HasMaxLength(32)
 21595                        .HasColumnType("TEXT");
 21596
 21597                    b.Property<string>("DashboardTheme")
 21598                        .HasMaxLength(32)
 21599                        .HasColumnType("TEXT");
 21600
 21601                    b.Property<bool>("EnableNextVideoInfoOverlay")
 21602                        .HasColumnType("INTEGER");
 21603
 21604                    b.Property<int?>("IndexBy")
 21605                        .HasColumnType("INTEGER");
 21606
 21607                    b.Property<Guid>("ItemId")
 21608                        .HasColumnType("TEXT");
 21609
 21610                    b.Property<int>("ScrollDirection")
 21611                        .HasColumnType("INTEGER");
 21612
 21613                    b.Property<bool>("ShowBackdrop")
 21614                        .HasColumnType("INTEGER");
 21615
 21616                    b.Property<bool>("ShowSidebar")
 21617                        .HasColumnType("INTEGER");
 21618
 21619                    b.Property<int>("SkipBackwardLength")
 21620                        .HasColumnType("INTEGER");
 21621
 21622                    b.Property<int>("SkipForwardLength")
 21623                        .HasColumnType("INTEGER");
 21624
 21625                    b.Property<string>("TvHome")
 21626                        .HasMaxLength(32)
 21627                        .HasColumnType("TEXT");
 21628
 21629                    b.Property<Guid>("UserId")
 21630                        .HasColumnType("TEXT");
 21631
 21632                    b.HasKey("Id");
 21633
 21634                    b.HasIndex("UserId", "ItemId", "Client")
 21635                        .IsUnique();
 21636
 21637                    b.ToTable("DisplayPreferences");
 21638
 21639                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21640                });
 641
 21642            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.HomeSection", b =>
 21643                {
 21644                    b.Property<int>("Id")
 21645                        .ValueGeneratedOnAdd()
 21646                        .HasColumnType("INTEGER");
 21647
 21648                    b.Property<int>("DisplayPreferencesId")
 21649                        .HasColumnType("INTEGER");
 21650
 21651                    b.Property<int>("Order")
 21652                        .HasColumnType("INTEGER");
 21653
 21654                    b.Property<int>("Type")
 21655                        .HasColumnType("INTEGER");
 21656
 21657                    b.HasKey("Id");
 21658
 21659                    b.HasIndex("DisplayPreferencesId");
 21660
 21661                    b.ToTable("HomeSection");
 21662
 21663                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21664                });
 665
 21666            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ImageInfo", b =>
 21667                {
 21668                    b.Property<int>("Id")
 21669                        .ValueGeneratedOnAdd()
 21670                        .HasColumnType("INTEGER");
 21671
 21672                    b.Property<DateTime>("LastModified")
 21673                        .HasColumnType("TEXT");
 21674
 21675                    b.Property<string>("Path")
 21676                        .IsRequired()
 21677                        .HasMaxLength(512)
 21678                        .HasColumnType("TEXT");
 21679
 21680                    b.Property<Guid?>("UserId")
 21681                        .HasColumnType("TEXT");
 21682
 21683                    b.HasKey("Id");
 21684
 21685                    b.HasIndex("UserId")
 21686                        .IsUnique();
 21687
 21688                    b.ToTable("ImageInfos");
 21689
 21690                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21691                });
 692
 21693            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ItemDisplayPreferences", b =>
 21694                {
 21695                    b.Property<int>("Id")
 21696                        .ValueGeneratedOnAdd()
 21697                        .HasColumnType("INTEGER");
 21698
 21699                    b.Property<string>("Client")
 21700                        .IsRequired()
 21701                        .HasMaxLength(32)
 21702                        .HasColumnType("TEXT");
 21703
 21704                    b.Property<int?>("IndexBy")
 21705                        .HasColumnType("INTEGER");
 21706
 21707                    b.Property<Guid>("ItemId")
 21708                        .HasColumnType("TEXT");
 21709
 21710                    b.Property<bool>("RememberIndexing")
 21711                        .HasColumnType("INTEGER");
 21712
 21713                    b.Property<bool>("RememberSorting")
 21714                        .HasColumnType("INTEGER");
 21715
 21716                    b.Property<string>("SortBy")
 21717                        .IsRequired()
 21718                        .HasMaxLength(64)
 21719                        .HasColumnType("TEXT");
 21720
 21721                    b.Property<int>("SortOrder")
 21722                        .HasColumnType("INTEGER");
 21723
 21724                    b.Property<Guid>("UserId")
 21725                        .HasColumnType("TEXT");
 21726
 21727                    b.Property<int>("ViewType")
 21728                        .HasColumnType("INTEGER");
 21729
 21730                    b.HasKey("Id");
 21731
 21732                    b.HasIndex("UserId");
 21733
 21734                    b.ToTable("ItemDisplayPreferences");
 21735
 21736                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21737                });
 738
 21739            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ItemValue", b =>
 21740                {
 21741                    b.Property<Guid>("ItemValueId")
 21742                        .ValueGeneratedOnAdd()
 21743                        .HasColumnType("TEXT");
 21744
 21745                    b.Property<string>("CleanValue")
 21746                        .IsRequired()
 21747                        .HasColumnType("TEXT");
 21748
 21749                    b.Property<int>("Type")
 21750                        .HasColumnType("INTEGER");
 21751
 21752                    b.Property<string>("Value")
 21753                        .IsRequired()
 21754                        .HasColumnType("TEXT");
 21755
 21756                    b.HasKey("ItemValueId");
 21757
 21758                    b.HasIndex("Type", "CleanValue");
 21759
 21760                    b.HasIndex("Type", "Value")
 21761                        .IsUnique();
 21762
 21763                    b.ToTable("ItemValues");
 21764
 21765                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21766                });
 767
 21768            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ItemValueMap", b =>
 21769                {
 21770                    b.Property<Guid>("ItemValueId")
 21771                        .HasColumnType("TEXT");
 21772
 21773                    b.Property<Guid>("ItemId")
 21774                        .HasColumnType("TEXT");
 21775
 21776                    b.HasKey("ItemValueId", "ItemId");
 21777
 21778                    b.HasIndex("ItemId");
 21779
 21780                    b.ToTable("ItemValuesMap");
 21781
 21782                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21783                });
 784
 21785            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.KeyframeData", b =>
 21786                {
 21787                    b.Property<Guid>("ItemId")
 21788                        .HasColumnType("TEXT");
 21789
 21790                    b.PrimitiveCollection<string>("KeyframeTicks")
 21791                        .HasColumnType("TEXT");
 21792
 21793                    b.Property<long>("TotalDuration")
 21794                        .HasColumnType("INTEGER");
 21795
 21796                    b.HasKey("ItemId");
 21797
 21798                    b.ToTable("KeyframeData");
 21799
 21800                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21801                });
 802
 21803            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.LinkedChildEntity", b =>
 21804                {
 21805                    b.Property<Guid>("ParentId")
 21806                        .HasColumnType("TEXT");
 21807
 21808                    b.Property<Guid>("ChildId")
 21809                        .HasColumnType("TEXT");
 21810
 21811                    b.Property<int>("ChildType")
 21812                        .HasColumnType("INTEGER");
 21813
 21814                    b.Property<int?>("SortOrder")
 21815                        .HasColumnType("INTEGER");
 21816
 21817                    b.HasKey("ParentId", "ChildId");
 21818
 21819                    b.HasIndex("ChildId");
 21820
 21821                    b.HasIndex("ParentId");
 21822
 21823                    b.HasIndex("ChildId", "ChildType");
 21824
 21825                    b.HasIndex("ParentId", "ChildType");
 21826
 21827                    b.HasIndex("ParentId", "SortOrder");
 21828
 21829                    b.ToTable("LinkedChildren", (string)null);
 21830
 21831                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21832                });
 833
 21834            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.MediaSegment", b =>
 21835                {
 21836                    b.Property<Guid>("Id")
 21837                        .ValueGeneratedOnAdd()
 21838                        .HasColumnType("TEXT");
 21839
 21840                    b.Property<long>("EndTicks")
 21841                        .HasColumnType("INTEGER");
 21842
 21843                    b.Property<Guid>("ItemId")
 21844                        .HasColumnType("TEXT");
 21845
 21846                    b.Property<string>("SegmentProviderId")
 21847                        .IsRequired()
 21848                        .HasColumnType("TEXT");
 21849
 21850                    b.Property<long>("StartTicks")
 21851                        .HasColumnType("INTEGER");
 21852
 21853                    b.Property<int>("Type")
 21854                        .HasColumnType("INTEGER");
 21855
 21856                    b.HasKey("Id");
 21857
 21858                    b.ToTable("MediaSegments");
 21859
 21860                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21861                });
 862
 21863            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.MediaStreamInfo", b =>
 21864                {
 21865                    b.Property<Guid>("ItemId")
 21866                        .HasColumnType("TEXT");
 21867
 21868                    b.Property<int>("StreamIndex")
 21869                        .HasColumnType("INTEGER");
 21870
 21871                    b.Property<string>("AspectRatio")
 21872                        .HasColumnType("TEXT");
 21873
 21874                    b.Property<float?>("AverageFrameRate")
 21875                        .HasColumnType("REAL");
 21876
 21877                    b.Property<int?>("BitDepth")
 21878                        .HasColumnType("INTEGER");
 21879
 21880                    b.Property<int?>("BitRate")
 21881                        .HasColumnType("INTEGER");
 21882
 21883                    b.Property<int?>("BlPresentFlag")
 21884                        .HasColumnType("INTEGER");
 21885
 21886                    b.Property<string>("ChannelLayout")
 21887                        .HasColumnType("TEXT");
 21888
 21889                    b.Property<int?>("Channels")
 21890                        .HasColumnType("INTEGER");
 21891
 21892                    b.Property<string>("Codec")
 21893                        .HasColumnType("TEXT");
 21894
 21895                    b.Property<string>("CodecTag")
 21896                        .HasColumnType("TEXT");
 21897
 21898                    b.Property<string>("CodecTimeBase")
 21899                        .HasColumnType("TEXT");
 21900
 21901                    b.Property<string>("ColorPrimaries")
 21902                        .HasColumnType("TEXT");
 21903
 21904                    b.Property<string>("ColorSpace")
 21905                        .HasColumnType("TEXT");
 21906
 21907                    b.Property<string>("ColorTransfer")
 21908                        .HasColumnType("TEXT");
 21909
 21910                    b.Property<string>("Comment")
 21911                        .HasColumnType("TEXT");
 21912
 21913                    b.Property<int?>("DvBlSignalCompatibilityId")
 21914                        .HasColumnType("INTEGER");
 21915
 21916                    b.Property<int?>("DvLevel")
 21917                        .HasColumnType("INTEGER");
 21918
 21919                    b.Property<int?>("DvProfile")
 21920                        .HasColumnType("INTEGER");
 21921
 21922                    b.Property<int?>("DvVersionMajor")
 21923                        .HasColumnType("INTEGER");
 21924
 21925                    b.Property<int?>("DvVersionMinor")
 21926                        .HasColumnType("INTEGER");
 21927
 21928                    b.Property<int?>("ElPresentFlag")
 21929                        .HasColumnType("INTEGER");
 21930
 21931                    b.Property<bool?>("Hdr10PlusPresentFlag")
 21932                        .HasColumnType("INTEGER");
 21933
 21934                    b.Property<int?>("Height")
 21935                        .HasColumnType("INTEGER");
 21936
 21937                    b.Property<bool?>("IsAnamorphic")
 21938                        .HasColumnType("INTEGER");
 21939
 21940                    b.Property<bool?>("IsAvc")
 21941                        .HasColumnType("INTEGER");
 21942
 21943                    b.Property<bool>("IsDefault")
 21944                        .HasColumnType("INTEGER");
 21945
 21946                    b.Property<bool>("IsExternal")
 21947                        .HasColumnType("INTEGER");
 21948
 21949                    b.Property<bool>("IsForced")
 21950                        .HasColumnType("INTEGER");
 21951
 21952                    b.Property<bool?>("IsHearingImpaired")
 21953                        .HasColumnType("INTEGER");
 21954
 21955                    b.Property<bool?>("IsInterlaced")
 21956                        .HasColumnType("INTEGER");
 21957
 21958                    b.Property<string>("KeyFrames")
 21959                        .HasColumnType("TEXT");
 21960
 21961                    b.Property<string>("Language")
 21962                        .HasColumnType("TEXT");
 21963
 21964                    b.Property<float?>("Level")
 21965                        .HasColumnType("REAL");
 21966
 21967                    b.Property<string>("NalLengthSize")
 21968                        .HasColumnType("TEXT");
 21969
 21970                    b.Property<string>("Path")
 21971                        .HasColumnType("TEXT");
 21972
 21973                    b.Property<string>("PixelFormat")
 21974                        .HasColumnType("TEXT");
 21975
 21976                    b.Property<string>("Profile")
 21977                        .HasColumnType("TEXT");
 21978
 21979                    b.Property<float?>("RealFrameRate")
 21980                        .HasColumnType("REAL");
 21981
 21982                    b.Property<int?>("RefFrames")
 21983                        .HasColumnType("INTEGER");
 21984
 21985                    b.Property<int?>("Rotation")
 21986                        .HasColumnType("INTEGER");
 21987
 21988                    b.Property<int?>("RpuPresentFlag")
 21989                        .HasColumnType("INTEGER");
 21990
 21991                    b.Property<int?>("SampleRate")
 21992                        .HasColumnType("INTEGER");
 21993
 21994                    b.Property<int>("StreamType")
 21995                        .HasColumnType("INTEGER");
 21996
 21997                    b.Property<string>("TimeBase")
 21998                        .HasColumnType("TEXT");
 21999
 211000                    b.Property<string>("Title")
 211001                        .HasColumnType("TEXT");
 211002
 211003                    b.Property<int?>("Width")
 211004                        .HasColumnType("INTEGER");
 211005
 211006                    b.HasKey("ItemId", "StreamIndex");
 211007
 211008                    b.HasIndex("StreamIndex");
 211009
 211010                    b.HasIndex("StreamType");
 211011
 211012                    b.HasIndex("StreamIndex", "StreamType");
 211013
 211014                    b.HasIndex("StreamIndex", "StreamType", "Language");
 211015
 211016                    b.ToTable("MediaStreamInfos");
 211017
 211018                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211019                });
 1020
 211021            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.People", b =>
 211022                {
 211023                    b.Property<Guid>("Id")
 211024                        .ValueGeneratedOnAdd()
 211025                        .HasColumnType("TEXT");
 211026
 211027                    b.Property<string>("Name")
 211028                        .IsRequired()
 211029                        .HasColumnType("TEXT");
 211030
 211031                    b.Property<string>("PersonType")
 211032                        .HasColumnType("TEXT");
 211033
 211034                    b.HasKey("Id");
 211035
 211036                    b.HasIndex("Name");
 211037
 211038                    b.ToTable("Peoples");
 211039
 211040                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211041                });
 1042
 211043            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.PeopleBaseItemMap", b =>
 211044                {
 211045                    b.Property<Guid>("ItemId")
 211046                        .HasColumnType("TEXT");
 211047
 211048                    b.Property<Guid>("PeopleId")
 211049                        .HasColumnType("TEXT");
 211050
 211051                    b.Property<string>("Role")
 211052                        .HasColumnType("TEXT");
 211053
 211054                    b.Property<int?>("ListOrder")
 211055                        .HasColumnType("INTEGER");
 211056
 211057                    b.Property<int?>("SortOrder")
 211058                        .HasColumnType("INTEGER");
 211059
 211060                    b.HasKey("ItemId", "PeopleId", "Role");
 211061
 211062                    b.HasIndex("PeopleId");
 211063
 211064                    b.HasIndex("ItemId", "ListOrder");
 211065
 211066                    b.HasIndex("ItemId", "SortOrder");
 211067
 211068                    b.ToTable("PeopleBaseItemMap");
 211069
 211070                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211071                });
 1072
 211073            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Permission", b =>
 211074                {
 211075                    b.Property<int>("Id")
 211076                        .ValueGeneratedOnAdd()
 211077                        .HasColumnType("INTEGER");
 211078
 211079                    b.Property<int>("Kind")
 211080                        .HasColumnType("INTEGER");
 211081
 211082                    b.Property<Guid?>("Permission_Permissions_Guid")
 211083                        .HasColumnType("TEXT");
 211084
 211085                    b.Property<uint>("RowVersion")
 211086                        .IsConcurrencyToken()
 211087                        .HasColumnType("INTEGER");
 211088
 211089                    b.Property<Guid?>("UserId")
 211090                        .HasColumnType("TEXT");
 211091
 211092                    b.Property<bool>("Value")
 211093                        .HasColumnType("INTEGER");
 211094
 211095                    b.HasKey("Id");
 211096
 211097                    b.HasIndex("UserId", "Kind")
 211098                        .IsUnique()
 211099                        .HasFilter("[UserId] IS NOT NULL");
 211100
 211101                    b.ToTable("Permissions");
 211102
 211103                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211104                });
 1105
 211106            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Preference", b =>
 211107                {
 211108                    b.Property<int>("Id")
 211109                        .ValueGeneratedOnAdd()
 211110                        .HasColumnType("INTEGER");
 211111
 211112                    b.Property<int>("Kind")
 211113                        .HasColumnType("INTEGER");
 211114
 211115                    b.Property<Guid?>("Preference_Preferences_Guid")
 211116                        .HasColumnType("TEXT");
 211117
 211118                    b.Property<uint>("RowVersion")
 211119                        .IsConcurrencyToken()
 211120                        .HasColumnType("INTEGER");
 211121
 211122                    b.Property<Guid?>("UserId")
 211123                        .HasColumnType("TEXT");
 211124
 211125                    b.Property<string>("Value")
 211126                        .IsRequired()
 211127                        .HasMaxLength(65535)
 211128                        .HasColumnType("TEXT");
 211129
 211130                    b.HasKey("Id");
 211131
 211132                    b.HasIndex("UserId", "Kind")
 211133                        .IsUnique()
 211134                        .HasFilter("[UserId] IS NOT NULL");
 211135
 211136                    b.ToTable("Preferences");
 211137
 211138                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211139                });
 1140
 211141            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Security.ApiKey", b =>
 211142                {
 211143                    b.Property<int>("Id")
 211144                        .ValueGeneratedOnAdd()
 211145                        .HasColumnType("INTEGER");
 211146
 211147                    b.Property<string>("AccessToken")
 211148                        .IsRequired()
 211149                        .HasColumnType("TEXT");
 211150
 211151                    b.Property<DateTime>("DateCreated")
 211152                        .HasColumnType("TEXT");
 211153
 211154                    b.Property<DateTime>("DateLastActivity")
 211155                        .HasColumnType("TEXT");
 211156
 211157                    b.Property<string>("Name")
 211158                        .IsRequired()
 211159                        .HasMaxLength(64)
 211160                        .HasColumnType("TEXT");
 211161
 211162                    b.HasKey("Id");
 211163
 211164                    b.HasIndex("AccessToken")
 211165                        .IsUnique();
 211166
 211167                    b.ToTable("ApiKeys");
 211168
 211169                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211170                });
 1171
 211172            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Security.Device", b =>
 211173                {
 211174                    b.Property<int>("Id")
 211175                        .ValueGeneratedOnAdd()
 211176                        .HasColumnType("INTEGER");
 211177
 211178                    b.Property<string>("AccessToken")
 211179                        .IsRequired()
 211180                        .HasColumnType("TEXT");
 211181
 211182                    b.Property<string>("AppName")
 211183                        .IsRequired()
 211184                        .HasMaxLength(64)
 211185                        .HasColumnType("TEXT");
 211186
 211187                    b.Property<string>("AppVersion")
 211188                        .IsRequired()
 211189                        .HasMaxLength(32)
 211190                        .HasColumnType("TEXT");
 211191
 211192                    b.Property<DateTime>("DateCreated")
 211193                        .HasColumnType("TEXT");
 211194
 211195                    b.Property<DateTime>("DateLastActivity")
 211196                        .HasColumnType("TEXT");
 211197
 211198                    b.Property<DateTime>("DateModified")
 211199                        .HasColumnType("TEXT");
 211200
 211201                    b.Property<string>("DeviceId")
 211202                        .IsRequired()
 211203                        .HasMaxLength(256)
 211204                        .HasColumnType("TEXT");
 211205
 211206                    b.Property<string>("DeviceName")
 211207                        .IsRequired()
 211208                        .HasMaxLength(64)
 211209                        .HasColumnType("TEXT");
 211210
 211211                    b.Property<bool>("IsActive")
 211212                        .HasColumnType("INTEGER");
 211213
 211214                    b.Property<Guid>("UserId")
 211215                        .HasColumnType("TEXT");
 211216
 211217                    b.HasKey("Id");
 211218
 211219                    b.HasIndex("DeviceId");
 211220
 211221                    b.HasIndex("AccessToken", "DateLastActivity");
 211222
 211223                    b.HasIndex("DeviceId", "DateLastActivity");
 211224
 211225                    b.HasIndex("UserId", "DeviceId");
 211226
 211227                    b.ToTable("Devices");
 211228
 211229                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211230                });
 1231
 211232            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Security.DeviceOptions", b =>
 211233                {
 211234                    b.Property<int>("Id")
 211235                        .ValueGeneratedOnAdd()
 211236                        .HasColumnType("INTEGER");
 211237
 211238                    b.Property<string>("CustomName")
 211239                        .HasColumnType("TEXT");
 211240
 211241                    b.Property<string>("DeviceId")
 211242                        .IsRequired()
 211243                        .HasColumnType("TEXT");
 211244
 211245                    b.HasKey("Id");
 211246
 211247                    b.HasIndex("DeviceId")
 211248                        .IsUnique();
 211249
 211250                    b.ToTable("DeviceOptions");
 211251
 211252                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211253                });
 1254
 211255            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.TrickplayInfo", b =>
 211256                {
 211257                    b.Property<Guid>("ItemId")
 211258                        .HasColumnType("TEXT");
 211259
 211260                    b.Property<int>("Width")
 211261                        .HasColumnType("INTEGER");
 211262
 211263                    b.Property<int>("Bandwidth")
 211264                        .HasColumnType("INTEGER");
 211265
 211266                    b.Property<int>("Height")
 211267                        .HasColumnType("INTEGER");
 211268
 211269                    b.Property<int>("Interval")
 211270                        .HasColumnType("INTEGER");
 211271
 211272                    b.Property<int>("ThumbnailCount")
 211273                        .HasColumnType("INTEGER");
 211274
 211275                    b.Property<int>("TileHeight")
 211276                        .HasColumnType("INTEGER");
 211277
 211278                    b.Property<int>("TileWidth")
 211279                        .HasColumnType("INTEGER");
 211280
 211281                    b.HasKey("ItemId", "Width");
 211282
 211283                    b.ToTable("TrickplayInfos");
 211284
 211285                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211286                });
 1287
 211288            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.User", b =>
 211289                {
 211290                    b.Property<Guid>("Id")
 211291                        .ValueGeneratedOnAdd()
 211292                        .HasColumnType("TEXT");
 211293
 211294                    b.Property<string>("AudioLanguagePreference")
 211295                        .HasMaxLength(255)
 211296                        .HasColumnType("TEXT");
 211297
 211298                    b.Property<string>("AuthenticationProviderId")
 211299                        .IsRequired()
 211300                        .HasMaxLength(255)
 211301                        .HasColumnType("TEXT");
 211302
 211303                    b.Property<string>("CastReceiverId")
 211304                        .HasMaxLength(32)
 211305                        .HasColumnType("TEXT");
 211306
 211307                    b.Property<bool>("DisplayCollectionsView")
 211308                        .HasColumnType("INTEGER");
 211309
 211310                    b.Property<bool>("DisplayMissingEpisodes")
 211311                        .HasColumnType("INTEGER");
 211312
 211313                    b.Property<bool>("EnableAutoLogin")
 211314                        .HasColumnType("INTEGER");
 211315
 211316                    b.Property<bool>("EnableLocalPassword")
 211317                        .HasColumnType("INTEGER");
 211318
 211319                    b.Property<bool>("EnableNextEpisodeAutoPlay")
 211320                        .HasColumnType("INTEGER");
 211321
 211322                    b.Property<bool>("EnableUserPreferenceAccess")
 211323                        .HasColumnType("INTEGER");
 211324
 211325                    b.Property<bool>("HidePlayedInLatest")
 211326                        .HasColumnType("INTEGER");
 211327
 211328                    b.Property<long>("InternalId")
 211329                        .HasColumnType("INTEGER");
 211330
 211331                    b.Property<int>("InvalidLoginAttemptCount")
 211332                        .HasColumnType("INTEGER");
 211333
 211334                    b.Property<DateTime?>("LastActivityDate")
 211335                        .HasColumnType("TEXT");
 211336
 211337                    b.Property<DateTime?>("LastLoginDate")
 211338                        .HasColumnType("TEXT");
 211339
 211340                    b.Property<int?>("LoginAttemptsBeforeLockout")
 211341                        .HasColumnType("INTEGER");
 211342
 211343                    b.Property<int>("MaxActiveSessions")
 211344                        .HasColumnType("INTEGER");
 211345
 211346                    b.Property<int?>("MaxParentalRatingScore")
 211347                        .HasColumnType("INTEGER");
 211348
 211349                    b.Property<int?>("MaxParentalRatingSubScore")
 211350                        .HasColumnType("INTEGER");
 211351
 211352                    b.Property<bool>("MustUpdatePassword")
 211353                        .HasColumnType("INTEGER");
 211354
 211355                    b.Property<string>("Password")
 211356                        .HasMaxLength(65535)
 211357                        .HasColumnType("TEXT");
 211358
 211359                    b.Property<string>("PasswordResetProviderId")
 211360                        .IsRequired()
 211361                        .HasMaxLength(255)
 211362                        .HasColumnType("TEXT");
 211363
 211364                    b.Property<bool>("PlayDefaultAudioTrack")
 211365                        .HasColumnType("INTEGER");
 211366
 211367                    b.Property<bool>("RememberAudioSelections")
 211368                        .HasColumnType("INTEGER");
 211369
 211370                    b.Property<bool>("RememberSubtitleSelections")
 211371                        .HasColumnType("INTEGER");
 211372
 211373                    b.Property<int?>("RemoteClientBitrateLimit")
 211374                        .HasColumnType("INTEGER");
 211375
 211376                    b.Property<uint>("RowVersion")
 211377                        .IsConcurrencyToken()
 211378                        .HasColumnType("INTEGER");
 211379
 211380                    b.Property<string>("SubtitleLanguagePreference")
 211381                        .HasMaxLength(255)
 211382                        .HasColumnType("TEXT");
 211383
 211384                    b.Property<int>("SubtitleMode")
 211385                        .HasColumnType("INTEGER");
 211386
 211387                    b.Property<int>("SyncPlayAccess")
 211388                        .HasColumnType("INTEGER");
 211389
 211390                    b.Property<string>("Username")
 211391                        .IsRequired()
 211392                        .HasMaxLength(255)
 211393                        .HasColumnType("TEXT");
 211394
 211395                    b.HasKey("Id");
 211396
 211397                    b.HasIndex("Username")
 211398                        .IsUnique();
 211399
 211400                    b.ToTable("Users");
 211401
 211402                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211403                });
 1404
 211405            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.UserData", b =>
 211406                {
 211407                    b.Property<Guid>("ItemId")
 211408                        .HasColumnType("TEXT");
 211409
 211410                    b.Property<Guid>("UserId")
 211411                        .HasColumnType("TEXT");
 211412
 211413                    b.Property<string>("CustomDataKey")
 211414                        .HasColumnType("TEXT");
 211415
 211416                    b.Property<int?>("AudioStreamIndex")
 211417                        .HasColumnType("INTEGER");
 211418
 211419                    b.Property<bool>("IsFavorite")
 211420                        .HasColumnType("INTEGER");
 211421
 211422                    b.Property<DateTime?>("LastPlayedDate")
 211423                        .HasColumnType("TEXT");
 211424
 211425                    b.Property<bool?>("Likes")
 211426                        .HasColumnType("INTEGER");
 211427
 211428                    b.Property<int>("PlayCount")
 211429                        .HasColumnType("INTEGER");
 211430
 211431                    b.Property<long>("PlaybackPositionTicks")
 211432                        .HasColumnType("INTEGER");
 211433
 211434                    b.Property<bool>("Played")
 211435                        .HasColumnType("INTEGER");
 211436
 211437                    b.Property<double?>("Rating")
 211438                        .HasColumnType("REAL");
 211439
 211440                    b.Property<DateTime?>("RetentionDate")
 211441                        .HasColumnType("TEXT");
 211442
 211443                    b.Property<int?>("SubtitleStreamIndex")
 211444                        .HasColumnType("INTEGER");
 211445
 211446                    b.HasKey("ItemId", "UserId", "CustomDataKey");
 211447
 211448                    b.HasIndex("UserId");
 211449
 211450                    b.HasIndex("ItemId", "UserId", "IsFavorite");
 211451
 211452                    b.HasIndex("ItemId", "UserId", "LastPlayedDate");
 211453
 211454                    b.HasIndex("ItemId", "UserId", "PlaybackPositionTicks");
 211455
 211456                    b.HasIndex("ItemId", "UserId", "Played");
 211457
 211458                    b.ToTable("UserData");
 211459
 211460                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211461                });
 1462
 211463            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.AccessSchedule", b =>
 211464                {
 211465                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", null)
 211466                        .WithMany("AccessSchedules")
 211467                        .HasForeignKey("UserId")
 211468                        .OnDelete(DeleteBehavior.Cascade)
 211469                        .IsRequired();
 211470                });
 1471
 211472            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.AncestorId", b =>
 211473                {
 211474                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211475                        .WithMany("Parents")
 211476                        .HasForeignKey("ItemId")
 211477                        .OnDelete(DeleteBehavior.Cascade)
 211478                        .IsRequired();
 211479
 211480                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "ParentItem")
 211481                        .WithMany("Children")
 211482                        .HasForeignKey("ParentItemId")
 211483                        .OnDelete(DeleteBehavior.Cascade)
 211484                        .IsRequired();
 211485
 211486                    b.Navigation("Item");
 211487
 211488                    b.Navigation("ParentItem");
 211489                });
 1490
 211491            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.AttachmentStreamInfo", b =>
 211492                {
 211493                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211494                        .WithMany()
 211495                        .HasForeignKey("ItemId")
 211496                        .OnDelete(DeleteBehavior.Cascade)
 211497                        .IsRequired();
 211498
 211499                    b.Navigation("Item");
 211500                });
 1501
 211502            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemEntity", b =>
 211503                {
 211504                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Owner")
 211505                        .WithMany("Extras")
 211506                        .HasForeignKey("OwnerId")
 211507                        .OnDelete(DeleteBehavior.NoAction);
 211508
 211509                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "DirectParent")
 211510                        .WithMany("DirectChildren")
 211511                        .HasForeignKey("ParentId")
 211512                        .OnDelete(DeleteBehavior.Cascade);
 211513
 211514                    b.Navigation("DirectParent");
 211515
 211516                    b.Navigation("Owner");
 211517                });
 1518
 211519            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemImageInfo", b =>
 211520                {
 211521                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211522                        .WithMany("Images")
 211523                        .HasForeignKey("ItemId")
 211524                        .OnDelete(DeleteBehavior.Cascade)
 211525                        .IsRequired();
 211526
 211527                    b.Navigation("Item");
 211528                });
 1529
 211530            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemMetadataField", b =>
 211531                {
 211532                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211533                        .WithMany("LockedFields")
 211534                        .HasForeignKey("ItemId")
 211535                        .OnDelete(DeleteBehavior.Cascade)
 211536                        .IsRequired();
 211537
 211538                    b.Navigation("Item");
 211539                });
 1540
 211541            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemProvider", b =>
 211542                {
 211543                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211544                        .WithMany("Provider")
 211545                        .HasForeignKey("ItemId")
 211546                        .OnDelete(DeleteBehavior.Cascade)
 211547                        .IsRequired();
 211548
 211549                    b.Navigation("Item");
 211550                });
 1551
 211552            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemTrailerType", b =>
 211553                {
 211554                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211555                        .WithMany("TrailerTypes")
 211556                        .HasForeignKey("ItemId")
 211557                        .OnDelete(DeleteBehavior.Cascade)
 211558                        .IsRequired();
 211559
 211560                    b.Navigation("Item");
 211561                });
 1562
 211563            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Chapter", b =>
 211564                {
 211565                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211566                        .WithMany("Chapters")
 211567                        .HasForeignKey("ItemId")
 211568                        .OnDelete(DeleteBehavior.Cascade)
 211569                        .IsRequired();
 211570
 211571                    b.Navigation("Item");
 211572                });
 1573
 211574            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.DisplayPreferences", b =>
 211575                {
 211576                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", null)
 211577                        .WithMany("DisplayPreferences")
 211578                        .HasForeignKey("UserId")
 211579                        .OnDelete(DeleteBehavior.Cascade)
 211580                        .IsRequired();
 211581                });
 1582
 211583            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.HomeSection", b =>
 211584                {
 211585                    b.HasOne("Jellyfin.Database.Implementations.Entities.DisplayPreferences", null)
 211586                        .WithMany("HomeSections")
 211587                        .HasForeignKey("DisplayPreferencesId")
 211588                        .OnDelete(DeleteBehavior.Cascade)
 211589                        .IsRequired();
 211590                });
 1591
 211592            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ImageInfo", b =>
 211593                {
 211594                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", null)
 211595                        .WithOne("ProfileImage")
 211596                        .HasForeignKey("Jellyfin.Database.Implementations.Entities.ImageInfo", "UserId")
 211597                        .OnDelete(DeleteBehavior.Cascade);
 211598                });
 1599
 211600            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ItemDisplayPreferences", b =>
 211601                {
 211602                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", null)
 211603                        .WithMany("ItemDisplayPreferences")
 211604                        .HasForeignKey("UserId")
 211605                        .OnDelete(DeleteBehavior.Cascade)
 211606                        .IsRequired();
 211607                });
 1608
 211609            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ItemValueMap", b =>
 211610                {
 211611                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211612                        .WithMany("ItemValues")
 211613                        .HasForeignKey("ItemId")
 211614                        .OnDelete(DeleteBehavior.Cascade)
 211615                        .IsRequired();
 211616
 211617                    b.HasOne("Jellyfin.Database.Implementations.Entities.ItemValue", "ItemValue")
 211618                        .WithMany("BaseItemsMap")
 211619                        .HasForeignKey("ItemValueId")
 211620                        .OnDelete(DeleteBehavior.Cascade)
 211621                        .IsRequired();
 211622
 211623                    b.Navigation("Item");
 211624
 211625                    b.Navigation("ItemValue");
 211626                });
 1627
 211628            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.KeyframeData", b =>
 211629                {
 211630                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211631                        .WithMany()
 211632                        .HasForeignKey("ItemId")
 211633                        .OnDelete(DeleteBehavior.Cascade)
 211634                        .IsRequired();
 211635
 211636                    b.Navigation("Item");
 211637                });
 1638
 211639            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.LinkedChildEntity", b =>
 211640                {
 211641                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Child")
 211642                        .WithMany("LinkedChildOfEntities")
 211643                        .HasForeignKey("ChildId")
 211644                        .OnDelete(DeleteBehavior.NoAction)
 211645                        .IsRequired();
 211646
 211647                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Parent")
 211648                        .WithMany("LinkedChildEntities")
 211649                        .HasForeignKey("ParentId")
 211650                        .OnDelete(DeleteBehavior.NoAction)
 211651                        .IsRequired();
 211652
 211653                    b.Navigation("Child");
 211654
 211655                    b.Navigation("Parent");
 211656                });
 1657
 211658            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.MediaStreamInfo", b =>
 211659                {
 211660                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211661                        .WithMany("MediaStreams")
 211662                        .HasForeignKey("ItemId")
 211663                        .OnDelete(DeleteBehavior.Cascade)
 211664                        .IsRequired();
 211665
 211666                    b.Navigation("Item");
 211667                });
 1668
 211669            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.PeopleBaseItemMap", b =>
 211670                {
 211671                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211672                        .WithMany("Peoples")
 211673                        .HasForeignKey("ItemId")
 211674                        .OnDelete(DeleteBehavior.Cascade)
 211675                        .IsRequired();
 211676
 211677                    b.HasOne("Jellyfin.Database.Implementations.Entities.People", "People")
 211678                        .WithMany("BaseItems")
 211679                        .HasForeignKey("PeopleId")
 211680                        .OnDelete(DeleteBehavior.Cascade)
 211681                        .IsRequired();
 211682
 211683                    b.Navigation("Item");
 211684
 211685                    b.Navigation("People");
 211686                });
 1687
 211688            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Permission", b =>
 211689                {
 211690                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", null)
 211691                        .WithMany("Permissions")
 211692                        .HasForeignKey("UserId")
 211693                        .OnDelete(DeleteBehavior.Cascade);
 211694                });
 1695
 211696            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Preference", b =>
 211697                {
 211698                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", null)
 211699                        .WithMany("Preferences")
 211700                        .HasForeignKey("UserId")
 211701                        .OnDelete(DeleteBehavior.Cascade);
 211702                });
 1703
 211704            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Security.Device", b =>
 211705                {
 211706                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", "User")
 211707                        .WithMany()
 211708                        .HasForeignKey("UserId")
 211709                        .OnDelete(DeleteBehavior.Cascade)
 211710                        .IsRequired();
 211711
 211712                    b.Navigation("User");
 211713                });
 1714
 211715            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.UserData", b =>
 211716                {
 211717                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211718                        .WithMany("UserData")
 211719                        .HasForeignKey("ItemId")
 211720                        .OnDelete(DeleteBehavior.Cascade)
 211721                        .IsRequired();
 211722
 211723                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", "User")
 211724                        .WithMany()
 211725                        .HasForeignKey("UserId")
 211726                        .OnDelete(DeleteBehavior.Cascade)
 211727                        .IsRequired();
 211728
 211729                    b.Navigation("Item");
 211730
 211731                    b.Navigation("User");
 211732                });
 1733
 211734            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemEntity", b =>
 211735                {
 211736                    b.Navigation("Chapters");
 211737
 211738                    b.Navigation("Children");
 211739
 211740                    b.Navigation("DirectChildren");
 211741
 211742                    b.Navigation("Extras");
 211743
 211744                    b.Navigation("Images");
 211745
 211746                    b.Navigation("ItemValues");
 211747
 211748                    b.Navigation("LinkedChildEntities");
 211749
 211750                    b.Navigation("LinkedChildOfEntities");
 211751
 211752                    b.Navigation("LockedFields");
 211753
 211754                    b.Navigation("MediaStreams");
 211755
 211756                    b.Navigation("Parents");
 211757
 211758                    b.Navigation("Peoples");
 211759
 211760                    b.Navigation("Provider");
 211761
 211762                    b.Navigation("TrailerTypes");
 211763
 211764                    b.Navigation("UserData");
 211765                });
 1766
 211767            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.DisplayPreferences", b =>
 211768                {
 211769                    b.Navigation("HomeSections");
 211770                });
 1771
 211772            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ItemValue", b =>
 211773                {
 211774                    b.Navigation("BaseItemsMap");
 211775                });
 1776
 211777            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.People", b =>
 211778                {
 211779                    b.Navigation("BaseItems");
 211780                });
 1781
 211782            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.User", b =>
 211783                {
 211784                    b.Navigation("AccessSchedules");
 211785
 211786                    b.Navigation("DisplayPreferences");
 211787
 211788                    b.Navigation("ItemDisplayPreferences");
 211789
 211790                    b.Navigation("Permissions");
 211791
 211792                    b.Navigation("Preferences");
 211793
 211794                    b.Navigation("ProfileImage");
 211795                });
 1796#pragma warning restore 612, 618
 211797        }
 1798    }
 1799}