< Summary - Jellyfin

Line coverage
99%
Covered lines: 1735
Uncovered lines: 5
Coverable lines: 1740
Total lines: 1848
Line coverage: 99.7%
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: 99.7% (1732/1737) Total lines: 18455/22/2026 - 12:15:17 AM Line coverage: 99.7% (1735/1740) Total lines: 1848

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/20260215201634_ChangePrimaryVersionIdToGuid.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 ChangePrimaryVersionIdToGuid : Migration
 10    {
 11        /// <inheritdoc />
 12        protected override void Up(MigrationBuilder migrationBuilder)
 13        {
 14            // Convert "N" format (32 chars, no hyphens) to standard GUID format (36 chars with hyphens)
 2115            migrationBuilder.Sql(
 2116                @"UPDATE BaseItems
 2117                  SET PrimaryVersionId = UPPER(
 2118                    SUBSTR(PrimaryVersionId,1,8)||'-'||
 2119                    SUBSTR(PrimaryVersionId,9,4)||'-'||
 2120                    SUBSTR(PrimaryVersionId,13,4)||'-'||
 2121                    SUBSTR(PrimaryVersionId,17,4)||'-'||
 2122                    SUBSTR(PrimaryVersionId,21,12))
 2123                  WHERE PrimaryVersionId IS NOT NULL AND LENGTH(PrimaryVersionId) = 32");
 24
 25            // Normalize existing standard-format values to uppercase
 2126            migrationBuilder.Sql(
 2127                @"UPDATE BaseItems
 2128                  SET PrimaryVersionId = UPPER(PrimaryVersionId)
 2129                  WHERE PrimaryVersionId IS NOT NULL");
 30
 31            // Clear invalid values (not 36 characters = not a valid GUID)
 2132            migrationBuilder.Sql(
 2133                @"UPDATE BaseItems
 2134                  SET PrimaryVersionId = NULL
 2135                  WHERE PrimaryVersionId IS NOT NULL AND LENGTH(PrimaryVersionId) != 36");
 36
 37            // Clear placeholder/empty GUIDs
 2138            migrationBuilder.Sql(
 2139                @"UPDATE BaseItems
 2140                  SET PrimaryVersionId = NULL
 2141                  WHERE PrimaryVersionId = '00000000-0000-0000-0000-000000000000'");
 2142        }
 43
 44        /// <inheritdoc />
 45        protected override void Down(MigrationBuilder migrationBuilder)
 46        {
 47            // Convert standard GUID format back to "N" format (remove hyphens, lowercase)
 048            migrationBuilder.Sql(
 049                @"UPDATE BaseItems
 050                  SET PrimaryVersionId = LOWER(REPLACE(PrimaryVersionId, '-', ''))
 051                  WHERE PrimaryVersionId IS NOT NULL");
 052        }
 53    }
 54}

/srv/git/jellyfin/src/Jellyfin.Database/Jellyfin.Database.Providers.Sqlite/Migrations/20260215201634_ChangePrimaryVersionIdToGuid.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("20260215201634_ChangePrimaryVersionIdToGuid")]
 15    partial class ChangePrimaryVersionIdToGuid
 16    {
 17        /// <inheritdoc />
 18        protected override void BuildTargetModel(ModelBuilder modelBuilder)
 19        {
 20#pragma warning disable 612, 618
 2121            modelBuilder.HasAnnotation("ProductVersion", "10.0.3");
 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<int?>("ExtraType")
 21214                        .HasColumnType("INTEGER");
 21215
 21216                    b.Property<string>("ForcedSortName")
 21217                        .HasColumnType("TEXT");
 21218
 21219                    b.Property<string>("Genres")
 21220                        .HasColumnType("TEXT");
 21221
 21222                    b.Property<int?>("Height")
 21223                        .HasColumnType("INTEGER");
 21224
 21225                    b.Property<int?>("IndexNumber")
 21226                        .HasColumnType("INTEGER");
 21227
 21228                    b.Property<int?>("InheritedParentalRatingSubValue")
 21229                        .HasColumnType("INTEGER");
 21230
 21231                    b.Property<int?>("InheritedParentalRatingValue")
 21232                        .HasColumnType("INTEGER");
 21233
 21234                    b.Property<bool>("IsFolder")
 21235                        .HasColumnType("INTEGER");
 21236
 21237                    b.Property<bool>("IsInMixedFolder")
 21238                        .HasColumnType("INTEGER");
 21239
 21240                    b.Property<bool>("IsLocked")
 21241                        .HasColumnType("INTEGER");
 21242
 21243                    b.Property<bool>("IsMovie")
 21244                        .HasColumnType("INTEGER");
 21245
 21246                    b.Property<bool>("IsRepeat")
 21247                        .HasColumnType("INTEGER");
 21248
 21249                    b.Property<bool>("IsSeries")
 21250                        .HasColumnType("INTEGER");
 21251
 21252                    b.Property<bool>("IsVirtualItem")
 21253                        .HasColumnType("INTEGER");
 21254
 21255                    b.Property<float?>("LUFS")
 21256                        .HasColumnType("REAL");
 21257
 21258                    b.Property<string>("MediaType")
 21259                        .HasColumnType("TEXT");
 21260
 21261                    b.Property<string>("Name")
 21262                        .HasColumnType("TEXT");
 21263
 21264                    b.Property<float?>("NormalizationGain")
 21265                        .HasColumnType("REAL");
 21266
 21267                    b.Property<string>("OfficialRating")
 21268                        .HasColumnType("TEXT");
 21269
 21270                    b.Property<string>("OriginalLanguage")
 21271                        .HasColumnType("TEXT");
 21272
 21273                    b.Property<string>("OriginalTitle")
 21274                        .HasColumnType("TEXT");
 21275
 21276                    b.Property<string>("Overview")
 21277                        .HasColumnType("TEXT");
 21278
 21279                    b.Property<Guid?>("OwnerId")
 21280                        .HasColumnType("TEXT");
 21281
 21282                    b.Property<Guid?>("ParentId")
 21283                        .HasColumnType("TEXT");
 21284
 21285                    b.Property<int?>("ParentIndexNumber")
 21286                        .HasColumnType("INTEGER");
 21287
 21288                    b.Property<string>("Path")
 21289                        .HasColumnType("TEXT");
 21290
 21291                    b.Property<string>("PreferredMetadataCountryCode")
 21292                        .HasColumnType("TEXT");
 21293
 21294                    b.Property<string>("PreferredMetadataLanguage")
 21295                        .HasColumnType("TEXT");
 21296
 21297                    b.Property<DateTime?>("PremiereDate")
 21298                        .HasColumnType("TEXT");
 21299
 21300                    b.Property<string>("PresentationUniqueKey")
 21301                        .HasColumnType("TEXT");
 21302
 21303                    b.Property<Guid?>("PrimaryVersionId")
 21304                        .HasColumnType("TEXT");
 21305
 21306                    b.Property<string>("ProductionLocations")
 21307                        .HasColumnType("TEXT");
 21308
 21309                    b.Property<int?>("ProductionYear")
 21310                        .HasColumnType("INTEGER");
 21311
 21312                    b.Property<long?>("RunTimeTicks")
 21313                        .HasColumnType("INTEGER");
 21314
 21315                    b.Property<Guid?>("SeasonId")
 21316                        .HasColumnType("TEXT");
 21317
 21318                    b.Property<string>("SeasonName")
 21319                        .HasColumnType("TEXT");
 21320
 21321                    b.Property<Guid?>("SeriesId")
 21322                        .HasColumnType("TEXT");
 21323
 21324                    b.Property<string>("SeriesName")
 21325                        .HasColumnType("TEXT");
 21326
 21327                    b.Property<string>("SeriesPresentationUniqueKey")
 21328                        .HasColumnType("TEXT");
 21329
 21330                    b.Property<string>("ShowId")
 21331                        .HasColumnType("TEXT");
 21332
 21333                    b.Property<long?>("Size")
 21334                        .HasColumnType("INTEGER");
 21335
 21336                    b.Property<string>("SortName")
 21337                        .HasColumnType("TEXT");
 21338
 21339                    b.Property<DateTime?>("StartDate")
 21340                        .HasColumnType("TEXT");
 21341
 21342                    b.Property<string>("Studios")
 21343                        .HasColumnType("TEXT");
 21344
 21345                    b.Property<string>("Tagline")
 21346                        .HasColumnType("TEXT");
 21347
 21348                    b.Property<string>("Tags")
 21349                        .HasColumnType("TEXT");
 21350
 21351                    b.Property<Guid?>("TopParentId")
 21352                        .HasColumnType("TEXT");
 21353
 21354                    b.Property<int?>("TotalBitrate")
 21355                        .HasColumnType("INTEGER");
 21356
 21357                    b.Property<string>("Type")
 21358                        .IsRequired()
 21359                        .HasColumnType("TEXT");
 21360
 21361                    b.Property<string>("UnratedType")
 21362                        .HasColumnType("TEXT");
 21363
 21364                    b.Property<int?>("Width")
 21365                        .HasColumnType("INTEGER");
 21366
 21367                    b.HasKey("Id");
 21368
 21369                    b.HasIndex("Name");
 21370
 21371                    b.HasIndex("OwnerId");
 21372
 21373                    b.HasIndex("ParentId");
 21374
 21375                    b.HasIndex("Path");
 21376
 21377                    b.HasIndex("PresentationUniqueKey");
 21378
 21379                    b.HasIndex("SeasonId");
 21380
 21381                    b.HasIndex("SeriesId");
 21382
 21383                    b.HasIndex("SeriesName");
 21384
 21385                    b.HasIndex("ExtraType", "OwnerId");
 21386
 21387                    b.HasIndex("TopParentId", "Id");
 21388
 21389                    b.HasIndex("Type", "TopParentId", "Id");
 21390
 21391                    b.HasIndex("Type", "TopParentId", "PresentationUniqueKey");
 21392
 21393                    b.HasIndex("Type", "TopParentId", "SortName");
 21394
 21395                    b.HasIndex("Type", "TopParentId", "StartDate");
 21396
 21397                    b.HasIndex("MediaType", "TopParentId", "IsVirtualItem", "PresentationUniqueKey");
 21398
 21399                    b.HasIndex("TopParentId", "IsFolder", "IsVirtualItem", "DateCreated");
 21400
 21401                    b.HasIndex("TopParentId", "MediaType", "IsVirtualItem", "DateCreated");
 21402
 21403                    b.HasIndex("TopParentId", "Type", "IsVirtualItem", "DateCreated");
 21404
 21405                    b.HasIndex("Type", "SeriesPresentationUniqueKey", "IsFolder", "IsVirtualItem");
 21406
 21407                    b.HasIndex("Type", "SeriesPresentationUniqueKey", "ParentIndexNumber", "IndexNumber");
 21408
 21409                    b.HasIndex("Type", "SeriesPresentationUniqueKey", "PresentationUniqueKey", "SortName");
 21410
 21411                    b.HasIndex("IsFolder", "TopParentId", "IsVirtualItem", "PresentationUniqueKey", "DateCreated");
 21412
 21413                    b.HasIndex("Type", "TopParentId", "IsVirtualItem", "PresentationUniqueKey", "DateCreated");
 21414
 21415                    b.ToTable("BaseItems");
 21416
 21417                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21418
 21419                    b.HasData(
 21420                        new
 21421                        {
 21422                            Id = new Guid("00000000-0000-0000-0000-000000000001"),
 21423                            IsFolder = false,
 21424                            IsInMixedFolder = false,
 21425                            IsLocked = false,
 21426                            IsMovie = false,
 21427                            IsRepeat = false,
 21428                            IsSeries = false,
 21429                            IsVirtualItem = false,
 21430                            Name = "This is a placeholder item for UserData that has been detached from its original ite
 21431                            Type = "PLACEHOLDER"
 21432                        });
 21433                });
 434
 21435            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemImageInfo", b =>
 21436                {
 21437                    b.Property<Guid>("Id")
 21438                        .ValueGeneratedOnAdd()
 21439                        .HasColumnType("TEXT");
 21440
 21441                    b.Property<byte[]>("Blurhash")
 21442                        .HasColumnType("BLOB");
 21443
 21444                    b.Property<DateTime?>("DateModified")
 21445                        .HasColumnType("TEXT");
 21446
 21447                    b.Property<int>("Height")
 21448                        .HasColumnType("INTEGER");
 21449
 21450                    b.Property<int>("ImageType")
 21451                        .HasColumnType("INTEGER");
 21452
 21453                    b.Property<Guid>("ItemId")
 21454                        .HasColumnType("TEXT");
 21455
 21456                    b.Property<string>("Path")
 21457                        .IsRequired()
 21458                        .HasColumnType("TEXT");
 21459
 21460                    b.Property<int>("Width")
 21461                        .HasColumnType("INTEGER");
 21462
 21463                    b.HasKey("Id");
 21464
 21465                    b.HasIndex("ItemId", "ImageType");
 21466
 21467                    b.ToTable("BaseItemImageInfos");
 21468
 21469                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21470                });
 471
 21472            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemMetadataField", b =>
 21473                {
 21474                    b.Property<int>("Id")
 21475                        .HasColumnType("INTEGER");
 21476
 21477                    b.Property<Guid>("ItemId")
 21478                        .HasColumnType("TEXT");
 21479
 21480                    b.HasKey("Id", "ItemId");
 21481
 21482                    b.HasIndex("ItemId");
 21483
 21484                    b.ToTable("BaseItemMetadataFields");
 21485
 21486                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21487                });
 488
 21489            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemProvider", b =>
 21490                {
 21491                    b.Property<Guid>("ItemId")
 21492                        .HasColumnType("TEXT");
 21493
 21494                    b.Property<string>("ProviderId")
 21495                        .HasColumnType("TEXT");
 21496
 21497                    b.Property<string>("ProviderValue")
 21498                        .IsRequired()
 21499                        .HasColumnType("TEXT");
 21500
 21501                    b.HasKey("ItemId", "ProviderId");
 21502
 21503                    b.HasIndex("ProviderId", "ItemId", "ProviderValue");
 21504
 21505                    b.ToTable("BaseItemProviders");
 21506
 21507                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21508                });
 509
 21510            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemTrailerType", b =>
 21511                {
 21512                    b.Property<int>("Id")
 21513                        .HasColumnType("INTEGER");
 21514
 21515                    b.Property<Guid>("ItemId")
 21516                        .HasColumnType("TEXT");
 21517
 21518                    b.HasKey("Id", "ItemId");
 21519
 21520                    b.HasIndex("ItemId");
 21521
 21522                    b.ToTable("BaseItemTrailerTypes");
 21523
 21524                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21525                });
 526
 21527            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Chapter", b =>
 21528                {
 21529                    b.Property<Guid>("ItemId")
 21530                        .HasColumnType("TEXT");
 21531
 21532                    b.Property<int>("ChapterIndex")
 21533                        .HasColumnType("INTEGER");
 21534
 21535                    b.Property<DateTime?>("ImageDateModified")
 21536                        .HasColumnType("TEXT");
 21537
 21538                    b.Property<string>("ImagePath")
 21539                        .HasColumnType("TEXT");
 21540
 21541                    b.Property<string>("Name")
 21542                        .HasColumnType("TEXT");
 21543
 21544                    b.Property<long>("StartPositionTicks")
 21545                        .HasColumnType("INTEGER");
 21546
 21547                    b.HasKey("ItemId", "ChapterIndex");
 21548
 21549                    b.ToTable("Chapters");
 21550
 21551                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21552                });
 553
 21554            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.CustomItemDisplayPreferences", b =>
 21555                {
 21556                    b.Property<int>("Id")
 21557                        .ValueGeneratedOnAdd()
 21558                        .HasColumnType("INTEGER");
 21559
 21560                    b.Property<string>("Client")
 21561                        .IsRequired()
 21562                        .HasMaxLength(32)
 21563                        .HasColumnType("TEXT");
 21564
 21565                    b.Property<Guid>("ItemId")
 21566                        .HasColumnType("TEXT");
 21567
 21568                    b.Property<string>("Key")
 21569                        .IsRequired()
 21570                        .HasColumnType("TEXT");
 21571
 21572                    b.Property<Guid>("UserId")
 21573                        .HasColumnType("TEXT");
 21574
 21575                    b.Property<string>("Value")
 21576                        .HasColumnType("TEXT");
 21577
 21578                    b.HasKey("Id");
 21579
 21580                    b.HasIndex("UserId", "ItemId", "Client", "Key")
 21581                        .IsUnique();
 21582
 21583                    b.ToTable("CustomItemDisplayPreferences");
 21584
 21585                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21586                });
 587
 21588            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.DisplayPreferences", b =>
 21589                {
 21590                    b.Property<int>("Id")
 21591                        .ValueGeneratedOnAdd()
 21592                        .HasColumnType("INTEGER");
 21593
 21594                    b.Property<int>("ChromecastVersion")
 21595                        .HasColumnType("INTEGER");
 21596
 21597                    b.Property<string>("Client")
 21598                        .IsRequired()
 21599                        .HasMaxLength(32)
 21600                        .HasColumnType("TEXT");
 21601
 21602                    b.Property<string>("DashboardTheme")
 21603                        .HasMaxLength(32)
 21604                        .HasColumnType("TEXT");
 21605
 21606                    b.Property<bool>("EnableNextVideoInfoOverlay")
 21607                        .HasColumnType("INTEGER");
 21608
 21609                    b.Property<int?>("IndexBy")
 21610                        .HasColumnType("INTEGER");
 21611
 21612                    b.Property<Guid>("ItemId")
 21613                        .HasColumnType("TEXT");
 21614
 21615                    b.Property<int>("ScrollDirection")
 21616                        .HasColumnType("INTEGER");
 21617
 21618                    b.Property<bool>("ShowBackdrop")
 21619                        .HasColumnType("INTEGER");
 21620
 21621                    b.Property<bool>("ShowSidebar")
 21622                        .HasColumnType("INTEGER");
 21623
 21624                    b.Property<int>("SkipBackwardLength")
 21625                        .HasColumnType("INTEGER");
 21626
 21627                    b.Property<int>("SkipForwardLength")
 21628                        .HasColumnType("INTEGER");
 21629
 21630                    b.Property<string>("TvHome")
 21631                        .HasMaxLength(32)
 21632                        .HasColumnType("TEXT");
 21633
 21634                    b.Property<Guid>("UserId")
 21635                        .HasColumnType("TEXT");
 21636
 21637                    b.HasKey("Id");
 21638
 21639                    b.HasIndex("UserId", "ItemId", "Client")
 21640                        .IsUnique();
 21641
 21642                    b.ToTable("DisplayPreferences");
 21643
 21644                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21645                });
 646
 21647            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.HomeSection", b =>
 21648                {
 21649                    b.Property<int>("Id")
 21650                        .ValueGeneratedOnAdd()
 21651                        .HasColumnType("INTEGER");
 21652
 21653                    b.Property<int>("DisplayPreferencesId")
 21654                        .HasColumnType("INTEGER");
 21655
 21656                    b.Property<int>("Order")
 21657                        .HasColumnType("INTEGER");
 21658
 21659                    b.Property<int>("Type")
 21660                        .HasColumnType("INTEGER");
 21661
 21662                    b.HasKey("Id");
 21663
 21664                    b.HasIndex("DisplayPreferencesId");
 21665
 21666                    b.ToTable("HomeSection");
 21667
 21668                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21669                });
 670
 21671            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ImageInfo", b =>
 21672                {
 21673                    b.Property<int>("Id")
 21674                        .ValueGeneratedOnAdd()
 21675                        .HasColumnType("INTEGER");
 21676
 21677                    b.Property<DateTime>("LastModified")
 21678                        .HasColumnType("TEXT");
 21679
 21680                    b.Property<string>("Path")
 21681                        .IsRequired()
 21682                        .HasMaxLength(512)
 21683                        .HasColumnType("TEXT");
 21684
 21685                    b.Property<Guid?>("UserId")
 21686                        .HasColumnType("TEXT");
 21687
 21688                    b.HasKey("Id");
 21689
 21690                    b.HasIndex("UserId")
 21691                        .IsUnique();
 21692
 21693                    b.ToTable("ImageInfos");
 21694
 21695                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21696                });
 697
 21698            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ItemDisplayPreferences", b =>
 21699                {
 21700                    b.Property<int>("Id")
 21701                        .ValueGeneratedOnAdd()
 21702                        .HasColumnType("INTEGER");
 21703
 21704                    b.Property<string>("Client")
 21705                        .IsRequired()
 21706                        .HasMaxLength(32)
 21707                        .HasColumnType("TEXT");
 21708
 21709                    b.Property<int?>("IndexBy")
 21710                        .HasColumnType("INTEGER");
 21711
 21712                    b.Property<Guid>("ItemId")
 21713                        .HasColumnType("TEXT");
 21714
 21715                    b.Property<bool>("RememberIndexing")
 21716                        .HasColumnType("INTEGER");
 21717
 21718                    b.Property<bool>("RememberSorting")
 21719                        .HasColumnType("INTEGER");
 21720
 21721                    b.Property<string>("SortBy")
 21722                        .IsRequired()
 21723                        .HasMaxLength(64)
 21724                        .HasColumnType("TEXT");
 21725
 21726                    b.Property<int>("SortOrder")
 21727                        .HasColumnType("INTEGER");
 21728
 21729                    b.Property<Guid>("UserId")
 21730                        .HasColumnType("TEXT");
 21731
 21732                    b.Property<int>("ViewType")
 21733                        .HasColumnType("INTEGER");
 21734
 21735                    b.HasKey("Id");
 21736
 21737                    b.HasIndex("UserId");
 21738
 21739                    b.ToTable("ItemDisplayPreferences");
 21740
 21741                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21742                });
 743
 21744            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ItemValue", b =>
 21745                {
 21746                    b.Property<Guid>("ItemValueId")
 21747                        .ValueGeneratedOnAdd()
 21748                        .HasColumnType("TEXT");
 21749
 21750                    b.Property<string>("CleanValue")
 21751                        .IsRequired()
 21752                        .HasColumnType("TEXT");
 21753
 21754                    b.Property<int>("Type")
 21755                        .HasColumnType("INTEGER");
 21756
 21757                    b.Property<string>("Value")
 21758                        .IsRequired()
 21759                        .HasColumnType("TEXT");
 21760
 21761                    b.HasKey("ItemValueId");
 21762
 21763                    b.HasIndex("Type", "CleanValue");
 21764
 21765                    b.HasIndex("Type", "Value")
 21766                        .IsUnique();
 21767
 21768                    b.ToTable("ItemValues");
 21769
 21770                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21771                });
 772
 21773            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ItemValueMap", b =>
 21774                {
 21775                    b.Property<Guid>("ItemValueId")
 21776                        .HasColumnType("TEXT");
 21777
 21778                    b.Property<Guid>("ItemId")
 21779                        .HasColumnType("TEXT");
 21780
 21781                    b.HasKey("ItemValueId", "ItemId");
 21782
 21783                    b.HasIndex("ItemId");
 21784
 21785                    b.ToTable("ItemValuesMap");
 21786
 21787                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21788                });
 789
 21790            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.KeyframeData", b =>
 21791                {
 21792                    b.Property<Guid>("ItemId")
 21793                        .HasColumnType("TEXT");
 21794
 21795                    b.PrimitiveCollection<string>("KeyframeTicks")
 21796                        .HasColumnType("TEXT");
 21797
 21798                    b.Property<long>("TotalDuration")
 21799                        .HasColumnType("INTEGER");
 21800
 21801                    b.HasKey("ItemId");
 21802
 21803                    b.ToTable("KeyframeData");
 21804
 21805                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21806                });
 807
 21808            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.LinkedChildEntity", b =>
 21809                {
 21810                    b.Property<Guid>("ParentId")
 21811                        .HasColumnType("TEXT");
 21812
 21813                    b.Property<Guid>("ChildId")
 21814                        .HasColumnType("TEXT");
 21815
 21816                    b.Property<int>("ChildType")
 21817                        .HasColumnType("INTEGER");
 21818
 21819                    b.Property<int?>("SortOrder")
 21820                        .HasColumnType("INTEGER");
 21821
 21822                    b.HasKey("ParentId", "ChildId");
 21823
 21824                    b.HasIndex("ChildId", "ChildType");
 21825
 21826                    b.HasIndex("ParentId", "ChildType");
 21827
 21828                    b.HasIndex("ParentId", "SortOrder");
 21829
 21830                    b.ToTable("LinkedChildren", (string)null);
 21831
 21832                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21833                });
 834
 21835            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.MediaSegment", b =>
 21836                {
 21837                    b.Property<Guid>("Id")
 21838                        .ValueGeneratedOnAdd()
 21839                        .HasColumnType("TEXT");
 21840
 21841                    b.Property<long>("EndTicks")
 21842                        .HasColumnType("INTEGER");
 21843
 21844                    b.Property<Guid>("ItemId")
 21845                        .HasColumnType("TEXT");
 21846
 21847                    b.Property<string>("SegmentProviderId")
 21848                        .IsRequired()
 21849                        .HasColumnType("TEXT");
 21850
 21851                    b.Property<long>("StartTicks")
 21852                        .HasColumnType("INTEGER");
 21853
 21854                    b.Property<int>("Type")
 21855                        .HasColumnType("INTEGER");
 21856
 21857                    b.HasKey("Id");
 21858
 21859                    b.ToTable("MediaSegments");
 21860
 21861                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 21862                });
 863
 21864            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.MediaStreamInfo", b =>
 21865                {
 21866                    b.Property<Guid>("ItemId")
 21867                        .HasColumnType("TEXT");
 21868
 21869                    b.Property<int>("StreamIndex")
 21870                        .HasColumnType("INTEGER");
 21871
 21872                    b.Property<string>("AspectRatio")
 21873                        .HasColumnType("TEXT");
 21874
 21875                    b.Property<float?>("AverageFrameRate")
 21876                        .HasColumnType("REAL");
 21877
 21878                    b.Property<int?>("BitDepth")
 21879                        .HasColumnType("INTEGER");
 21880
 21881                    b.Property<int?>("BitRate")
 21882                        .HasColumnType("INTEGER");
 21883
 21884                    b.Property<int?>("BlPresentFlag")
 21885                        .HasColumnType("INTEGER");
 21886
 21887                    b.Property<string>("ChannelLayout")
 21888                        .HasColumnType("TEXT");
 21889
 21890                    b.Property<int?>("Channels")
 21891                        .HasColumnType("INTEGER");
 21892
 21893                    b.Property<string>("Codec")
 21894                        .HasColumnType("TEXT");
 21895
 21896                    b.Property<string>("CodecTag")
 21897                        .HasColumnType("TEXT");
 21898
 21899                    b.Property<string>("CodecTimeBase")
 21900                        .HasColumnType("TEXT");
 21901
 21902                    b.Property<string>("ColorPrimaries")
 21903                        .HasColumnType("TEXT");
 21904
 21905                    b.Property<string>("ColorSpace")
 21906                        .HasColumnType("TEXT");
 21907
 21908                    b.Property<string>("ColorTransfer")
 21909                        .HasColumnType("TEXT");
 21910
 21911                    b.Property<string>("Comment")
 21912                        .HasColumnType("TEXT");
 21913
 21914                    b.Property<int?>("DvBlSignalCompatibilityId")
 21915                        .HasColumnType("INTEGER");
 21916
 21917                    b.Property<int?>("DvLevel")
 21918                        .HasColumnType("INTEGER");
 21919
 21920                    b.Property<int?>("DvProfile")
 21921                        .HasColumnType("INTEGER");
 21922
 21923                    b.Property<int?>("DvVersionMajor")
 21924                        .HasColumnType("INTEGER");
 21925
 21926                    b.Property<int?>("DvVersionMinor")
 21927                        .HasColumnType("INTEGER");
 21928
 21929                    b.Property<int?>("ElPresentFlag")
 21930                        .HasColumnType("INTEGER");
 21931
 21932                    b.Property<bool?>("Hdr10PlusPresentFlag")
 21933                        .HasColumnType("INTEGER");
 21934
 21935                    b.Property<int?>("Height")
 21936                        .HasColumnType("INTEGER");
 21937
 21938                    b.Property<bool?>("IsAnamorphic")
 21939                        .HasColumnType("INTEGER");
 21940
 21941                    b.Property<bool?>("IsAvc")
 21942                        .HasColumnType("INTEGER");
 21943
 21944                    b.Property<bool>("IsDefault")
 21945                        .HasColumnType("INTEGER");
 21946
 21947                    b.Property<bool>("IsExternal")
 21948                        .HasColumnType("INTEGER");
 21949
 21950                    b.Property<bool>("IsForced")
 21951                        .HasColumnType("INTEGER");
 21952
 21953                    b.Property<bool?>("IsHearingImpaired")
 21954                        .HasColumnType("INTEGER");
 21955
 21956                    b.Property<bool?>("IsInterlaced")
 21957                        .HasColumnType("INTEGER");
 21958
 21959                    b.Property<string>("KeyFrames")
 21960                        .HasColumnType("TEXT");
 21961
 21962                    b.Property<string>("Language")
 21963                        .HasColumnType("TEXT");
 21964
 21965                    b.Property<float?>("Level")
 21966                        .HasColumnType("REAL");
 21967
 21968                    b.Property<string>("NalLengthSize")
 21969                        .HasColumnType("TEXT");
 21970
 21971                    b.Property<string>("Path")
 21972                        .HasColumnType("TEXT");
 21973
 21974                    b.Property<string>("PixelFormat")
 21975                        .HasColumnType("TEXT");
 21976
 21977                    b.Property<string>("Profile")
 21978                        .HasColumnType("TEXT");
 21979
 21980                    b.Property<float?>("RealFrameRate")
 21981                        .HasColumnType("REAL");
 21982
 21983                    b.Property<int?>("RefFrames")
 21984                        .HasColumnType("INTEGER");
 21985
 21986                    b.Property<int?>("Rotation")
 21987                        .HasColumnType("INTEGER");
 21988
 21989                    b.Property<int?>("RpuPresentFlag")
 21990                        .HasColumnType("INTEGER");
 21991
 21992                    b.Property<int?>("SampleRate")
 21993                        .HasColumnType("INTEGER");
 21994
 21995                    b.Property<int>("StreamType")
 21996                        .HasColumnType("INTEGER");
 21997
 21998                    b.Property<string>("TimeBase")
 21999                        .HasColumnType("TEXT");
 211000
 211001                    b.Property<string>("Title")
 211002                        .HasColumnType("TEXT");
 211003
 211004                    b.Property<int?>("Width")
 211005                        .HasColumnType("INTEGER");
 211006
 211007                    b.HasKey("ItemId", "StreamIndex");
 211008
 211009                    b.ToTable("MediaStreamInfos");
 211010
 211011                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211012                });
 1013
 211014            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.People", b =>
 211015                {
 211016                    b.Property<Guid>("Id")
 211017                        .ValueGeneratedOnAdd()
 211018                        .HasColumnType("TEXT");
 211019
 211020                    b.Property<string>("Name")
 211021                        .IsRequired()
 211022                        .HasColumnType("TEXT");
 211023
 211024                    b.Property<string>("PersonType")
 211025                        .HasColumnType("TEXT");
 211026
 211027                    b.HasKey("Id");
 211028
 211029                    b.HasIndex("Name");
 211030
 211031                    b.ToTable("Peoples");
 211032
 211033                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211034                });
 1035
 211036            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.PeopleBaseItemMap", b =>
 211037                {
 211038                    b.Property<Guid>("ItemId")
 211039                        .HasColumnType("TEXT");
 211040
 211041                    b.Property<Guid>("PeopleId")
 211042                        .HasColumnType("TEXT");
 211043
 211044                    b.Property<string>("Role")
 211045                        .HasColumnType("TEXT");
 211046
 211047                    b.Property<int?>("ListOrder")
 211048                        .HasColumnType("INTEGER");
 211049
 211050                    b.Property<int?>("SortOrder")
 211051                        .HasColumnType("INTEGER");
 211052
 211053                    b.HasKey("ItemId", "PeopleId", "Role");
 211054
 211055                    b.HasIndex("PeopleId");
 211056
 211057                    b.HasIndex("ItemId", "ListOrder");
 211058
 211059                    b.HasIndex("ItemId", "SortOrder");
 211060
 211061                    b.ToTable("PeopleBaseItemMap");
 211062
 211063                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211064                });
 1065
 211066            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Permission", b =>
 211067                {
 211068                    b.Property<int>("Id")
 211069                        .ValueGeneratedOnAdd()
 211070                        .HasColumnType("INTEGER");
 211071
 211072                    b.Property<int>("Kind")
 211073                        .HasColumnType("INTEGER");
 211074
 211075                    b.Property<Guid?>("Permission_Permissions_Guid")
 211076                        .HasColumnType("TEXT");
 211077
 211078                    b.Property<uint>("RowVersion")
 211079                        .IsConcurrencyToken()
 211080                        .HasColumnType("INTEGER");
 211081
 211082                    b.Property<Guid?>("UserId")
 211083                        .HasColumnType("TEXT");
 211084
 211085                    b.Property<bool>("Value")
 211086                        .HasColumnType("INTEGER");
 211087
 211088                    b.HasKey("Id");
 211089
 211090                    b.HasIndex("UserId", "Kind")
 211091                        .IsUnique()
 211092                        .HasFilter("[UserId] IS NOT NULL");
 211093
 211094                    b.ToTable("Permissions");
 211095
 211096                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211097                });
 1098
 211099            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Preference", b =>
 211100                {
 211101                    b.Property<int>("Id")
 211102                        .ValueGeneratedOnAdd()
 211103                        .HasColumnType("INTEGER");
 211104
 211105                    b.Property<int>("Kind")
 211106                        .HasColumnType("INTEGER");
 211107
 211108                    b.Property<Guid?>("Preference_Preferences_Guid")
 211109                        .HasColumnType("TEXT");
 211110
 211111                    b.Property<uint>("RowVersion")
 211112                        .IsConcurrencyToken()
 211113                        .HasColumnType("INTEGER");
 211114
 211115                    b.Property<Guid?>("UserId")
 211116                        .HasColumnType("TEXT");
 211117
 211118                    b.Property<string>("Value")
 211119                        .IsRequired()
 211120                        .HasMaxLength(65535)
 211121                        .HasColumnType("TEXT");
 211122
 211123                    b.HasKey("Id");
 211124
 211125                    b.HasIndex("UserId", "Kind")
 211126                        .IsUnique()
 211127                        .HasFilter("[UserId] IS NOT NULL");
 211128
 211129                    b.ToTable("Preferences");
 211130
 211131                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211132                });
 1133
 211134            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Security.ApiKey", b =>
 211135                {
 211136                    b.Property<int>("Id")
 211137                        .ValueGeneratedOnAdd()
 211138                        .HasColumnType("INTEGER");
 211139
 211140                    b.Property<string>("AccessToken")
 211141                        .IsRequired()
 211142                        .HasColumnType("TEXT");
 211143
 211144                    b.Property<DateTime>("DateCreated")
 211145                        .HasColumnType("TEXT");
 211146
 211147                    b.Property<DateTime>("DateLastActivity")
 211148                        .HasColumnType("TEXT");
 211149
 211150                    b.Property<string>("Name")
 211151                        .IsRequired()
 211152                        .HasMaxLength(64)
 211153                        .HasColumnType("TEXT");
 211154
 211155                    b.HasKey("Id");
 211156
 211157                    b.HasIndex("AccessToken")
 211158                        .IsUnique();
 211159
 211160                    b.ToTable("ApiKeys");
 211161
 211162                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211163                });
 1164
 211165            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Security.Device", b =>
 211166                {
 211167                    b.Property<int>("Id")
 211168                        .ValueGeneratedOnAdd()
 211169                        .HasColumnType("INTEGER");
 211170
 211171                    b.Property<string>("AccessToken")
 211172                        .IsRequired()
 211173                        .HasColumnType("TEXT");
 211174
 211175                    b.Property<string>("AppName")
 211176                        .IsRequired()
 211177                        .HasMaxLength(64)
 211178                        .HasColumnType("TEXT");
 211179
 211180                    b.Property<string>("AppVersion")
 211181                        .IsRequired()
 211182                        .HasMaxLength(32)
 211183                        .HasColumnType("TEXT");
 211184
 211185                    b.Property<DateTime>("DateCreated")
 211186                        .HasColumnType("TEXT");
 211187
 211188                    b.Property<DateTime>("DateLastActivity")
 211189                        .HasColumnType("TEXT");
 211190
 211191                    b.Property<DateTime>("DateModified")
 211192                        .HasColumnType("TEXT");
 211193
 211194                    b.Property<string>("DeviceId")
 211195                        .IsRequired()
 211196                        .HasMaxLength(256)
 211197                        .HasColumnType("TEXT");
 211198
 211199                    b.Property<string>("DeviceName")
 211200                        .IsRequired()
 211201                        .HasMaxLength(64)
 211202                        .HasColumnType("TEXT");
 211203
 211204                    b.Property<bool>("IsActive")
 211205                        .HasColumnType("INTEGER");
 211206
 211207                    b.Property<Guid>("UserId")
 211208                        .HasColumnType("TEXT");
 211209
 211210                    b.HasKey("Id");
 211211
 211212                    b.HasIndex("AccessToken", "DateLastActivity");
 211213
 211214                    b.HasIndex("DeviceId", "DateLastActivity");
 211215
 211216                    b.HasIndex("UserId", "DeviceId");
 211217
 211218                    b.ToTable("Devices");
 211219
 211220                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211221                });
 1222
 211223            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Security.DeviceOptions", b =>
 211224                {
 211225                    b.Property<int>("Id")
 211226                        .ValueGeneratedOnAdd()
 211227                        .HasColumnType("INTEGER");
 211228
 211229                    b.Property<string>("CustomName")
 211230                        .HasColumnType("TEXT");
 211231
 211232                    b.Property<string>("DeviceId")
 211233                        .IsRequired()
 211234                        .HasColumnType("TEXT");
 211235
 211236                    b.HasKey("Id");
 211237
 211238                    b.HasIndex("DeviceId")
 211239                        .IsUnique();
 211240
 211241                    b.ToTable("DeviceOptions");
 211242
 211243                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211244                });
 1245
 211246            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.TrickplayInfo", b =>
 211247                {
 211248                    b.Property<Guid>("ItemId")
 211249                        .HasColumnType("TEXT");
 211250
 211251                    b.Property<int>("Width")
 211252                        .HasColumnType("INTEGER");
 211253
 211254                    b.Property<int>("Bandwidth")
 211255                        .HasColumnType("INTEGER");
 211256
 211257                    b.Property<int>("Height")
 211258                        .HasColumnType("INTEGER");
 211259
 211260                    b.Property<int>("Interval")
 211261                        .HasColumnType("INTEGER");
 211262
 211263                    b.Property<int>("ThumbnailCount")
 211264                        .HasColumnType("INTEGER");
 211265
 211266                    b.Property<int>("TileHeight")
 211267                        .HasColumnType("INTEGER");
 211268
 211269                    b.Property<int>("TileWidth")
 211270                        .HasColumnType("INTEGER");
 211271
 211272                    b.HasKey("ItemId", "Width");
 211273
 211274                    b.ToTable("TrickplayInfos");
 211275
 211276                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211277                });
 1278
 211279            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.User", b =>
 211280                {
 211281                    b.Property<Guid>("Id")
 211282                        .ValueGeneratedOnAdd()
 211283                        .HasColumnType("TEXT");
 211284
 211285                    b.Property<string>("AudioLanguagePreference")
 211286                        .HasMaxLength(255)
 211287                        .HasColumnType("TEXT");
 211288
 211289                    b.Property<string>("AuthenticationProviderId")
 211290                        .IsRequired()
 211291                        .HasMaxLength(255)
 211292                        .HasColumnType("TEXT");
 211293
 211294                    b.Property<string>("CastReceiverId")
 211295                        .HasMaxLength(32)
 211296                        .HasColumnType("TEXT");
 211297
 211298                    b.Property<bool>("DisplayCollectionsView")
 211299                        .HasColumnType("INTEGER");
 211300
 211301                    b.Property<bool>("DisplayMissingEpisodes")
 211302                        .HasColumnType("INTEGER");
 211303
 211304                    b.Property<bool>("EnableAutoLogin")
 211305                        .HasColumnType("INTEGER");
 211306
 211307                    b.Property<bool>("EnableLocalPassword")
 211308                        .HasColumnType("INTEGER");
 211309
 211310                    b.Property<bool>("EnableNextEpisodeAutoPlay")
 211311                        .HasColumnType("INTEGER");
 211312
 211313                    b.Property<bool>("EnableUserPreferenceAccess")
 211314                        .HasColumnType("INTEGER");
 211315
 211316                    b.Property<bool>("HidePlayedInLatest")
 211317                        .HasColumnType("INTEGER");
 211318
 211319                    b.Property<long>("InternalId")
 211320                        .HasColumnType("INTEGER");
 211321
 211322                    b.Property<int>("InvalidLoginAttemptCount")
 211323                        .HasColumnType("INTEGER");
 211324
 211325                    b.Property<DateTime?>("LastActivityDate")
 211326                        .HasColumnType("TEXT");
 211327
 211328                    b.Property<DateTime?>("LastLoginDate")
 211329                        .HasColumnType("TEXT");
 211330
 211331                    b.Property<int?>("LoginAttemptsBeforeLockout")
 211332                        .HasColumnType("INTEGER");
 211333
 211334                    b.Property<int>("MaxActiveSessions")
 211335                        .HasColumnType("INTEGER");
 211336
 211337                    b.Property<int?>("MaxParentalRatingScore")
 211338                        .HasColumnType("INTEGER");
 211339
 211340                    b.Property<int?>("MaxParentalRatingSubScore")
 211341                        .HasColumnType("INTEGER");
 211342
 211343                    b.Property<bool>("MustUpdatePassword")
 211344                        .HasColumnType("INTEGER");
 211345
 211346                    b.Property<string>("Password")
 211347                        .HasMaxLength(65535)
 211348                        .HasColumnType("TEXT");
 211349
 211350                    b.Property<string>("PasswordResetProviderId")
 211351                        .IsRequired()
 211352                        .HasMaxLength(255)
 211353                        .HasColumnType("TEXT");
 211354
 211355                    b.Property<bool>("PlayDefaultAudioTrack")
 211356                        .HasColumnType("INTEGER");
 211357
 211358                    b.Property<bool>("RememberAudioSelections")
 211359                        .HasColumnType("INTEGER");
 211360
 211361                    b.Property<bool>("RememberSubtitleSelections")
 211362                        .HasColumnType("INTEGER");
 211363
 211364                    b.Property<int?>("RemoteClientBitrateLimit")
 211365                        .HasColumnType("INTEGER");
 211366
 211367                    b.Property<uint>("RowVersion")
 211368                        .IsConcurrencyToken()
 211369                        .HasColumnType("INTEGER");
 211370
 211371                    b.Property<string>("SubtitleLanguagePreference")
 211372                        .HasMaxLength(255)
 211373                        .HasColumnType("TEXT");
 211374
 211375                    b.Property<int>("SubtitleMode")
 211376                        .HasColumnType("INTEGER");
 211377
 211378                    b.Property<int>("SyncPlayAccess")
 211379                        .HasColumnType("INTEGER");
 211380
 211381                    b.Property<string>("Username")
 211382                        .IsRequired()
 211383                        .HasMaxLength(255)
 211384                        .HasColumnType("TEXT");
 211385
 211386                    b.HasKey("Id");
 211387
 211388                    b.HasIndex("Username")
 211389                        .IsUnique();
 211390
 211391                    b.ToTable("Users");
 211392
 211393                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211394                });
 1395
 211396            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.UserData", b =>
 211397                {
 211398                    b.Property<Guid>("ItemId")
 211399                        .HasColumnType("TEXT");
 211400
 211401                    b.Property<Guid>("UserId")
 211402                        .HasColumnType("TEXT");
 211403
 211404                    b.Property<string>("CustomDataKey")
 211405                        .HasColumnType("TEXT");
 211406
 211407                    b.Property<int?>("AudioStreamIndex")
 211408                        .HasColumnType("INTEGER");
 211409
 211410                    b.Property<bool>("IsFavorite")
 211411                        .HasColumnType("INTEGER");
 211412
 211413                    b.Property<DateTime?>("LastPlayedDate")
 211414                        .HasColumnType("TEXT");
 211415
 211416                    b.Property<bool?>("Likes")
 211417                        .HasColumnType("INTEGER");
 211418
 211419                    b.Property<int>("PlayCount")
 211420                        .HasColumnType("INTEGER");
 211421
 211422                    b.Property<long>("PlaybackPositionTicks")
 211423                        .HasColumnType("INTEGER");
 211424
 211425                    b.Property<bool>("Played")
 211426                        .HasColumnType("INTEGER");
 211427
 211428                    b.Property<double?>("Rating")
 211429                        .HasColumnType("REAL");
 211430
 211431                    b.Property<DateTime?>("RetentionDate")
 211432                        .HasColumnType("TEXT");
 211433
 211434                    b.Property<int?>("SubtitleStreamIndex")
 211435                        .HasColumnType("INTEGER");
 211436
 211437                    b.HasKey("ItemId", "UserId", "CustomDataKey");
 211438
 211439                    b.HasIndex("ItemId", "UserId", "IsFavorite");
 211440
 211441                    b.HasIndex("ItemId", "UserId", "LastPlayedDate");
 211442
 211443                    b.HasIndex("ItemId", "UserId", "PlaybackPositionTicks");
 211444
 211445                    b.HasIndex("ItemId", "UserId", "Played");
 211446
 211447                    b.HasIndex("UserId", "IsFavorite", "ItemId");
 211448
 211449                    b.HasIndex("UserId", "ItemId", "LastPlayedDate");
 211450
 211451                    b.HasIndex("UserId", "Played", "ItemId");
 211452
 211453                    b.ToTable("UserData");
 211454
 211455                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 211456                });
 1457
 211458            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.AccessSchedule", b =>
 211459                {
 211460                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", null)
 211461                        .WithMany("AccessSchedules")
 211462                        .HasForeignKey("UserId")
 211463                        .OnDelete(DeleteBehavior.Cascade)
 211464                        .IsRequired();
 211465                });
 1466
 211467            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.AncestorId", b =>
 211468                {
 211469                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211470                        .WithMany("Parents")
 211471                        .HasForeignKey("ItemId")
 211472                        .OnDelete(DeleteBehavior.Cascade)
 211473                        .IsRequired();
 211474
 211475                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "ParentItem")
 211476                        .WithMany("Children")
 211477                        .HasForeignKey("ParentItemId")
 211478                        .OnDelete(DeleteBehavior.Cascade)
 211479                        .IsRequired();
 211480
 211481                    b.Navigation("Item");
 211482
 211483                    b.Navigation("ParentItem");
 211484                });
 1485
 211486            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.AttachmentStreamInfo", b =>
 211487                {
 211488                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211489                        .WithMany()
 211490                        .HasForeignKey("ItemId")
 211491                        .OnDelete(DeleteBehavior.Cascade)
 211492                        .IsRequired();
 211493
 211494                    b.Navigation("Item");
 211495                });
 1496
 211497            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemEntity", b =>
 211498                {
 211499                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Owner")
 211500                        .WithMany("Extras")
 211501                        .HasForeignKey("OwnerId")
 211502                        .OnDelete(DeleteBehavior.NoAction);
 211503
 211504                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "DirectParent")
 211505                        .WithMany("DirectChildren")
 211506                        .HasForeignKey("ParentId")
 211507                        .OnDelete(DeleteBehavior.Cascade);
 211508
 211509                    b.Navigation("DirectParent");
 211510
 211511                    b.Navigation("Owner");
 211512                });
 1513
 211514            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemImageInfo", b =>
 211515                {
 211516                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211517                        .WithMany("Images")
 211518                        .HasForeignKey("ItemId")
 211519                        .OnDelete(DeleteBehavior.Cascade)
 211520                        .IsRequired();
 211521
 211522                    b.Navigation("Item");
 211523                });
 1524
 211525            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemMetadataField", b =>
 211526                {
 211527                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211528                        .WithMany("LockedFields")
 211529                        .HasForeignKey("ItemId")
 211530                        .OnDelete(DeleteBehavior.Cascade)
 211531                        .IsRequired();
 211532
 211533                    b.Navigation("Item");
 211534                });
 1535
 211536            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemProvider", b =>
 211537                {
 211538                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211539                        .WithMany("Provider")
 211540                        .HasForeignKey("ItemId")
 211541                        .OnDelete(DeleteBehavior.Cascade)
 211542                        .IsRequired();
 211543
 211544                    b.Navigation("Item");
 211545                });
 1546
 211547            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemTrailerType", b =>
 211548                {
 211549                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211550                        .WithMany("TrailerTypes")
 211551                        .HasForeignKey("ItemId")
 211552                        .OnDelete(DeleteBehavior.Cascade)
 211553                        .IsRequired();
 211554
 211555                    b.Navigation("Item");
 211556                });
 1557
 211558            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Chapter", b =>
 211559                {
 211560                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211561                        .WithMany("Chapters")
 211562                        .HasForeignKey("ItemId")
 211563                        .OnDelete(DeleteBehavior.Cascade)
 211564                        .IsRequired();
 211565
 211566                    b.Navigation("Item");
 211567                });
 1568
 211569            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.DisplayPreferences", b =>
 211570                {
 211571                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", null)
 211572                        .WithMany("DisplayPreferences")
 211573                        .HasForeignKey("UserId")
 211574                        .OnDelete(DeleteBehavior.Cascade)
 211575                        .IsRequired();
 211576                });
 1577
 211578            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.HomeSection", b =>
 211579                {
 211580                    b.HasOne("Jellyfin.Database.Implementations.Entities.DisplayPreferences", null)
 211581                        .WithMany("HomeSections")
 211582                        .HasForeignKey("DisplayPreferencesId")
 211583                        .OnDelete(DeleteBehavior.Cascade)
 211584                        .IsRequired();
 211585                });
 1586
 211587            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ImageInfo", b =>
 211588                {
 211589                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", null)
 211590                        .WithOne("ProfileImage")
 211591                        .HasForeignKey("Jellyfin.Database.Implementations.Entities.ImageInfo", "UserId")
 211592                        .OnDelete(DeleteBehavior.Cascade);
 211593                });
 1594
 211595            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ItemDisplayPreferences", b =>
 211596                {
 211597                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", null)
 211598                        .WithMany("ItemDisplayPreferences")
 211599                        .HasForeignKey("UserId")
 211600                        .OnDelete(DeleteBehavior.Cascade)
 211601                        .IsRequired();
 211602                });
 1603
 211604            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ItemValueMap", b =>
 211605                {
 211606                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211607                        .WithMany("ItemValues")
 211608                        .HasForeignKey("ItemId")
 211609                        .OnDelete(DeleteBehavior.Cascade)
 211610                        .IsRequired();
 211611
 211612                    b.HasOne("Jellyfin.Database.Implementations.Entities.ItemValue", "ItemValue")
 211613                        .WithMany("BaseItemsMap")
 211614                        .HasForeignKey("ItemValueId")
 211615                        .OnDelete(DeleteBehavior.Cascade)
 211616                        .IsRequired();
 211617
 211618                    b.Navigation("Item");
 211619
 211620                    b.Navigation("ItemValue");
 211621                });
 1622
 211623            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.KeyframeData", b =>
 211624                {
 211625                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211626                        .WithMany()
 211627                        .HasForeignKey("ItemId")
 211628                        .OnDelete(DeleteBehavior.Cascade)
 211629                        .IsRequired();
 211630
 211631                    b.Navigation("Item");
 211632                });
 1633
 211634            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.LinkedChildEntity", b =>
 211635                {
 211636                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Child")
 211637                        .WithMany("LinkedChildOfEntities")
 211638                        .HasForeignKey("ChildId")
 211639                        .OnDelete(DeleteBehavior.NoAction)
 211640                        .IsRequired();
 211641
 211642                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Parent")
 211643                        .WithMany("LinkedChildEntities")
 211644                        .HasForeignKey("ParentId")
 211645                        .OnDelete(DeleteBehavior.NoAction)
 211646                        .IsRequired();
 211647
 211648                    b.Navigation("Child");
 211649
 211650                    b.Navigation("Parent");
 211651                });
 1652
 211653            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.MediaStreamInfo", b =>
 211654                {
 211655                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211656                        .WithMany("MediaStreams")
 211657                        .HasForeignKey("ItemId")
 211658                        .OnDelete(DeleteBehavior.Cascade)
 211659                        .IsRequired();
 211660
 211661                    b.Navigation("Item");
 211662                });
 1663
 211664            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.PeopleBaseItemMap", b =>
 211665                {
 211666                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211667                        .WithMany("Peoples")
 211668                        .HasForeignKey("ItemId")
 211669                        .OnDelete(DeleteBehavior.Cascade)
 211670                        .IsRequired();
 211671
 211672                    b.HasOne("Jellyfin.Database.Implementations.Entities.People", "People")
 211673                        .WithMany("BaseItems")
 211674                        .HasForeignKey("PeopleId")
 211675                        .OnDelete(DeleteBehavior.Cascade)
 211676                        .IsRequired();
 211677
 211678                    b.Navigation("Item");
 211679
 211680                    b.Navigation("People");
 211681                });
 1682
 211683            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Permission", b =>
 211684                {
 211685                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", null)
 211686                        .WithMany("Permissions")
 211687                        .HasForeignKey("UserId")
 211688                        .OnDelete(DeleteBehavior.Cascade);
 211689                });
 1690
 211691            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Preference", b =>
 211692                {
 211693                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", null)
 211694                        .WithMany("Preferences")
 211695                        .HasForeignKey("UserId")
 211696                        .OnDelete(DeleteBehavior.Cascade);
 211697                });
 1698
 211699            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Security.Device", b =>
 211700                {
 211701                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", "User")
 211702                        .WithMany()
 211703                        .HasForeignKey("UserId")
 211704                        .OnDelete(DeleteBehavior.Cascade)
 211705                        .IsRequired();
 211706
 211707                    b.Navigation("User");
 211708                });
 1709
 211710            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.UserData", b =>
 211711                {
 211712                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 211713                        .WithMany("UserData")
 211714                        .HasForeignKey("ItemId")
 211715                        .OnDelete(DeleteBehavior.Cascade)
 211716                        .IsRequired();
 211717
 211718                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", "User")
 211719                        .WithMany()
 211720                        .HasForeignKey("UserId")
 211721                        .OnDelete(DeleteBehavior.Cascade)
 211722                        .IsRequired();
 211723
 211724                    b.Navigation("Item");
 211725
 211726                    b.Navigation("User");
 211727                });
 1728
 211729            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemEntity", b =>
 211730                {
 211731                    b.Navigation("Chapters");
 211732
 211733                    b.Navigation("Children");
 211734
 211735                    b.Navigation("DirectChildren");
 211736
 211737                    b.Navigation("Extras");
 211738
 211739                    b.Navigation("Images");
 211740
 211741                    b.Navigation("ItemValues");
 211742
 211743                    b.Navigation("LinkedChildEntities");
 211744
 211745                    b.Navigation("LinkedChildOfEntities");
 211746
 211747                    b.Navigation("LockedFields");
 211748
 211749                    b.Navigation("MediaStreams");
 211750
 211751                    b.Navigation("Parents");
 211752
 211753                    b.Navigation("Peoples");
 211754
 211755                    b.Navigation("Provider");
 211756
 211757                    b.Navigation("TrailerTypes");
 211758
 211759                    b.Navigation("UserData");
 211760                });
 1761
 211762            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.DisplayPreferences", b =>
 211763                {
 211764                    b.Navigation("HomeSections");
 211765                });
 1766
 211767            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ItemValue", b =>
 211768                {
 211769                    b.Navigation("BaseItemsMap");
 211770                });
 1771
 211772            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.People", b =>
 211773                {
 211774                    b.Navigation("BaseItems");
 211775                });
 1776
 211777            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.User", b =>
 211778                {
 211779                    b.Navigation("AccessSchedules");
 211780
 211781                    b.Navigation("DisplayPreferences");
 211782
 211783                    b.Navigation("ItemDisplayPreferences");
 211784
 211785                    b.Navigation("Permissions");
 211786
 211787                    b.Navigation("Preferences");
 211788
 211789                    b.Navigation("ProfileImage");
 211790                });
 1791#pragma warning restore 612, 618
 211792        }
 1793    }
 1794}