< Summary - Jellyfin

Line coverage
99%
Covered lines: 1738
Uncovered lines: 5
Coverable lines: 1743
Total lines: 1851
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/6/2026 - 12:15:23 AM Line coverage: 99.7% (1732/1737) Total lines: 18455/22/2026 - 12:15:17 AM Line coverage: 99.7% (1735/1740) Total lines: 18488/11/2026 - 12:17:00 AM Line coverage: 99.7% (1738/1743) Total lines: 1851

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)
 2215            migrationBuilder.Sql(
 2216                @"UPDATE BaseItems
 2217                  SET PrimaryVersionId = UPPER(
 2218                    SUBSTR(PrimaryVersionId,1,8)||'-'||
 2219                    SUBSTR(PrimaryVersionId,9,4)||'-'||
 2220                    SUBSTR(PrimaryVersionId,13,4)||'-'||
 2221                    SUBSTR(PrimaryVersionId,17,4)||'-'||
 2222                    SUBSTR(PrimaryVersionId,21,12))
 2223                  WHERE PrimaryVersionId IS NOT NULL AND LENGTH(PrimaryVersionId) = 32");
 24
 25            // Normalize existing standard-format values to uppercase
 2226            migrationBuilder.Sql(
 2227                @"UPDATE BaseItems
 2228                  SET PrimaryVersionId = UPPER(PrimaryVersionId)
 2229                  WHERE PrimaryVersionId IS NOT NULL");
 30
 31            // Clear invalid values (not 36 characters = not a valid GUID)
 2232            migrationBuilder.Sql(
 2233                @"UPDATE BaseItems
 2234                  SET PrimaryVersionId = NULL
 2235                  WHERE PrimaryVersionId IS NOT NULL AND LENGTH(PrimaryVersionId) != 36");
 36
 37            // Clear placeholder/empty GUIDs
 2238            migrationBuilder.Sql(
 2239                @"UPDATE BaseItems
 2240                  SET PrimaryVersionId = NULL
 2241                  WHERE PrimaryVersionId = '00000000-0000-0000-0000-000000000000'");
 2242        }
 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
 2221            modelBuilder.HasAnnotation("ProductVersion", "10.0.3");
 22
 2223            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.AccessSchedule", b =>
 2224                {
 2225                    b.Property<int>("Id")
 2226                        .ValueGeneratedOnAdd()
 2227                        .HasColumnType("INTEGER");
 2228
 2229                    b.Property<int>("DayOfWeek")
 2230                        .HasColumnType("INTEGER");
 2231
 2232                    b.Property<double>("EndHour")
 2233                        .HasColumnType("REAL");
 2234
 2235                    b.Property<double>("StartHour")
 2236                        .HasColumnType("REAL");
 2237
 2238                    b.Property<Guid>("UserId")
 2239                        .HasColumnType("TEXT");
 2240
 2241                    b.HasKey("Id");
 2242
 2243                    b.HasIndex("UserId");
 2244
 2245                    b.ToTable("AccessSchedules");
 2246
 2247                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 2248                });
 49
 2250            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ActivityLog", b =>
 2251                {
 2252                    b.Property<int>("Id")
 2253                        .ValueGeneratedOnAdd()
 2254                        .HasColumnType("INTEGER");
 2255
 2256                    b.Property<DateTime>("DateCreated")
 2257                        .HasColumnType("TEXT");
 2258
 2259                    b.Property<string>("ItemId")
 2260                        .HasMaxLength(256)
 2261                        .HasColumnType("TEXT");
 2262
 2263                    b.Property<int>("LogSeverity")
 2264                        .HasColumnType("INTEGER");
 2265
 2266                    b.Property<string>("Name")
 2267                        .IsRequired()
 2268                        .HasMaxLength(512)
 2269                        .HasColumnType("TEXT");
 2270
 2271                    b.Property<string>("Overview")
 2272                        .HasMaxLength(512)
 2273                        .HasColumnType("TEXT");
 2274
 2275                    b.Property<uint>("RowVersion")
 2276                        .IsConcurrencyToken()
 2277                        .HasColumnType("INTEGER");
 2278
 2279                    b.Property<string>("ShortOverview")
 2280                        .HasMaxLength(512)
 2281                        .HasColumnType("TEXT");
 2282
 2283                    b.Property<string>("Type")
 2284                        .IsRequired()
 2285                        .HasMaxLength(256)
 2286                        .HasColumnType("TEXT");
 2287
 2288                    b.Property<Guid>("UserId")
 2289                        .HasColumnType("TEXT");
 2290
 2291                    b.HasKey("Id");
 2292
 2293                    b.HasIndex("DateCreated");
 2294
 2295                    b.ToTable("ActivityLogs");
 2296
 2297                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 2298                });
 99
 22100            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.AncestorId", b =>
 22101                {
 22102                    b.Property<Guid>("ItemId")
 22103                        .HasColumnType("TEXT");
 22104
 22105                    b.Property<Guid>("ParentItemId")
 22106                        .HasColumnType("TEXT");
 22107
 22108                    b.HasKey("ItemId", "ParentItemId");
 22109
 22110                    b.HasIndex("ParentItemId");
 22111
 22112                    b.ToTable("AncestorIds");
 22113
 22114                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 22115                });
 116
 22117            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.AttachmentStreamInfo", b =>
 22118                {
 22119                    b.Property<Guid>("ItemId")
 22120                        .HasColumnType("TEXT");
 22121
 22122                    b.Property<int>("Index")
 22123                        .HasColumnType("INTEGER");
 22124
 22125                    b.Property<string>("Codec")
 22126                        .HasColumnType("TEXT");
 22127
 22128                    b.Property<string>("CodecTag")
 22129                        .HasColumnType("TEXT");
 22130
 22131                    b.Property<string>("Comment")
 22132                        .HasColumnType("TEXT");
 22133
 22134                    b.Property<string>("Filename")
 22135                        .HasColumnType("TEXT");
 22136
 22137                    b.Property<string>("MimeType")
 22138                        .HasColumnType("TEXT");
 22139
 22140                    b.HasKey("ItemId", "Index");
 22141
 22142                    b.ToTable("AttachmentStreamInfos");
 22143
 22144                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 22145                });
 146
 22147            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemEntity", b =>
 22148                {
 22149                    b.Property<Guid>("Id")
 22150                        .ValueGeneratedOnAdd()
 22151                        .HasColumnType("TEXT");
 22152
 22153                    b.Property<string>("Album")
 22154                        .HasColumnType("TEXT");
 22155
 22156                    b.Property<string>("AlbumArtists")
 22157                        .HasColumnType("TEXT");
 22158
 22159                    b.Property<string>("Artists")
 22160                        .HasColumnType("TEXT");
 22161
 22162                    b.Property<int?>("Audio")
 22163                        .HasColumnType("INTEGER");
 22164
 22165                    b.Property<Guid?>("ChannelId")
 22166                        .HasColumnType("TEXT");
 22167
 22168                    b.Property<string>("CleanName")
 22169                        .HasColumnType("TEXT");
 22170
 22171                    b.Property<float?>("CommunityRating")
 22172                        .HasColumnType("REAL");
 22173
 22174                    b.Property<float?>("CriticRating")
 22175                        .HasColumnType("REAL");
 22176
 22177                    b.Property<string>("CustomRating")
 22178                        .HasColumnType("TEXT");
 22179
 22180                    b.Property<string>("Data")
 22181                        .HasColumnType("TEXT");
 22182
 22183                    b.Property<DateTime?>("DateCreated")
 22184                        .HasColumnType("TEXT");
 22185
 22186                    b.Property<DateTime?>("DateLastMediaAdded")
 22187                        .HasColumnType("TEXT");
 22188
 22189                    b.Property<DateTime?>("DateLastRefreshed")
 22190                        .HasColumnType("TEXT");
 22191
 22192                    b.Property<DateTime?>("DateLastSaved")
 22193                        .HasColumnType("TEXT");
 22194
 22195                    b.Property<DateTime?>("DateModified")
 22196                        .HasColumnType("TEXT");
 22197
 22198                    b.Property<DateTime?>("EndDate")
 22199                        .HasColumnType("TEXT");
 22200
 22201                    b.Property<string>("EpisodeTitle")
 22202                        .HasColumnType("TEXT");
 22203
 22204                    b.Property<string>("ExternalId")
 22205                        .HasColumnType("TEXT");
 22206
 22207                    b.Property<string>("ExternalSeriesId")
 22208                        .HasColumnType("TEXT");
 22209
 22210                    b.Property<string>("ExternalServiceId")
 22211                        .HasColumnType("TEXT");
 22212
 22213                    b.Property<int?>("ExtraType")
 22214                        .HasColumnType("INTEGER");
 22215
 22216                    b.Property<string>("ForcedSortName")
 22217                        .HasColumnType("TEXT");
 22218
 22219                    b.Property<string>("Genres")
 22220                        .HasColumnType("TEXT");
 22221
 22222                    b.Property<int?>("Height")
 22223                        .HasColumnType("INTEGER");
 22224
 22225                    b.Property<int?>("IndexNumber")
 22226                        .HasColumnType("INTEGER");
 22227
 22228                    b.Property<int?>("InheritedParentalRatingSubValue")
 22229                        .HasColumnType("INTEGER");
 22230
 22231                    b.Property<int?>("InheritedParentalRatingValue")
 22232                        .HasColumnType("INTEGER");
 22233
 22234                    b.Property<bool>("IsFolder")
 22235                        .HasColumnType("INTEGER");
 22236
 22237                    b.Property<bool>("IsInMixedFolder")
 22238                        .HasColumnType("INTEGER");
 22239
 22240                    b.Property<bool>("IsLocked")
 22241                        .HasColumnType("INTEGER");
 22242
 22243                    b.Property<bool>("IsMovie")
 22244                        .HasColumnType("INTEGER");
 22245
 22246                    b.Property<bool>("IsRepeat")
 22247                        .HasColumnType("INTEGER");
 22248
 22249                    b.Property<bool>("IsSeries")
 22250                        .HasColumnType("INTEGER");
 22251
 22252                    b.Property<bool>("IsVirtualItem")
 22253                        .HasColumnType("INTEGER");
 22254
 22255                    b.Property<float?>("LUFS")
 22256                        .HasColumnType("REAL");
 22257
 22258                    b.Property<string>("MediaType")
 22259                        .HasColumnType("TEXT");
 22260
 22261                    b.Property<string>("Name")
 22262                        .HasColumnType("TEXT");
 22263
 22264                    b.Property<float?>("NormalizationGain")
 22265                        .HasColumnType("REAL");
 22266
 22267                    b.Property<string>("OfficialRating")
 22268                        .HasColumnType("TEXT");
 22269
 22270                    b.Property<string>("OriginalLanguage")
 22271                        .HasColumnType("TEXT");
 22272
 22273                    b.Property<string>("OriginalTitle")
 22274                        .HasColumnType("TEXT");
 22275
 22276                    b.Property<string>("Overview")
 22277                        .HasColumnType("TEXT");
 22278
 22279                    b.Property<Guid?>("OwnerId")
 22280                        .HasColumnType("TEXT");
 22281
 22282                    b.Property<Guid?>("ParentId")
 22283                        .HasColumnType("TEXT");
 22284
 22285                    b.Property<int?>("ParentIndexNumber")
 22286                        .HasColumnType("INTEGER");
 22287
 22288                    b.Property<string>("Path")
 22289                        .HasColumnType("TEXT");
 22290
 22291                    b.Property<string>("PreferredMetadataCountryCode")
 22292                        .HasColumnType("TEXT");
 22293
 22294                    b.Property<string>("PreferredMetadataLanguage")
 22295                        .HasColumnType("TEXT");
 22296
 22297                    b.Property<DateTime?>("PremiereDate")
 22298                        .HasColumnType("TEXT");
 22299
 22300                    b.Property<string>("PresentationUniqueKey")
 22301                        .HasColumnType("TEXT");
 22302
 22303                    b.Property<Guid?>("PrimaryVersionId")
 22304                        .HasColumnType("TEXT");
 22305
 22306                    b.Property<string>("ProductionLocations")
 22307                        .HasColumnType("TEXT");
 22308
 22309                    b.Property<int?>("ProductionYear")
 22310                        .HasColumnType("INTEGER");
 22311
 22312                    b.Property<long?>("RunTimeTicks")
 22313                        .HasColumnType("INTEGER");
 22314
 22315                    b.Property<Guid?>("SeasonId")
 22316                        .HasColumnType("TEXT");
 22317
 22318                    b.Property<string>("SeasonName")
 22319                        .HasColumnType("TEXT");
 22320
 22321                    b.Property<Guid?>("SeriesId")
 22322                        .HasColumnType("TEXT");
 22323
 22324                    b.Property<string>("SeriesName")
 22325                        .HasColumnType("TEXT");
 22326
 22327                    b.Property<string>("SeriesPresentationUniqueKey")
 22328                        .HasColumnType("TEXT");
 22329
 22330                    b.Property<string>("ShowId")
 22331                        .HasColumnType("TEXT");
 22332
 22333                    b.Property<long?>("Size")
 22334                        .HasColumnType("INTEGER");
 22335
 22336                    b.Property<string>("SortName")
 22337                        .HasColumnType("TEXT");
 22338
 22339                    b.Property<DateTime?>("StartDate")
 22340                        .HasColumnType("TEXT");
 22341
 22342                    b.Property<string>("Studios")
 22343                        .HasColumnType("TEXT");
 22344
 22345                    b.Property<string>("Tagline")
 22346                        .HasColumnType("TEXT");
 22347
 22348                    b.Property<string>("Tags")
 22349                        .HasColumnType("TEXT");
 22350
 22351                    b.Property<Guid?>("TopParentId")
 22352                        .HasColumnType("TEXT");
 22353
 22354                    b.Property<int?>("TotalBitrate")
 22355                        .HasColumnType("INTEGER");
 22356
 22357                    b.Property<string>("Type")
 22358                        .IsRequired()
 22359                        .HasColumnType("TEXT");
 22360
 22361                    b.Property<string>("UnratedType")
 22362                        .HasColumnType("TEXT");
 22363
 22364                    b.Property<int?>("Width")
 22365                        .HasColumnType("INTEGER");
 22366
 22367                    b.HasKey("Id");
 22368
 22369                    b.HasIndex("Name");
 22370
 22371                    b.HasIndex("OwnerId");
 22372
 22373                    b.HasIndex("ParentId");
 22374
 22375                    b.HasIndex("Path");
 22376
 22377                    b.HasIndex("PresentationUniqueKey");
 22378
 22379                    b.HasIndex("SeasonId");
 22380
 22381                    b.HasIndex("SeriesId");
 22382
 22383                    b.HasIndex("SeriesName");
 22384
 22385                    b.HasIndex("ExtraType", "OwnerId");
 22386
 22387                    b.HasIndex("TopParentId", "Id");
 22388
 22389                    b.HasIndex("Type", "TopParentId", "Id");
 22390
 22391                    b.HasIndex("Type", "TopParentId", "PresentationUniqueKey");
 22392
 22393                    b.HasIndex("Type", "TopParentId", "SortName");
 22394
 22395                    b.HasIndex("Type", "TopParentId", "StartDate");
 22396
 22397                    b.HasIndex("MediaType", "TopParentId", "IsVirtualItem", "PresentationUniqueKey");
 22398
 22399                    b.HasIndex("TopParentId", "IsFolder", "IsVirtualItem", "DateCreated");
 22400
 22401                    b.HasIndex("TopParentId", "MediaType", "IsVirtualItem", "DateCreated");
 22402
 22403                    b.HasIndex("TopParentId", "Type", "IsVirtualItem", "DateCreated");
 22404
 22405                    b.HasIndex("Type", "SeriesPresentationUniqueKey", "IsFolder", "IsVirtualItem");
 22406
 22407                    b.HasIndex("Type", "SeriesPresentationUniqueKey", "ParentIndexNumber", "IndexNumber");
 22408
 22409                    b.HasIndex("Type", "SeriesPresentationUniqueKey", "PresentationUniqueKey", "SortName");
 22410
 22411                    b.HasIndex("IsFolder", "TopParentId", "IsVirtualItem", "PresentationUniqueKey", "DateCreated");
 22412
 22413                    b.HasIndex("Type", "TopParentId", "IsVirtualItem", "PresentationUniqueKey", "DateCreated");
 22414
 22415                    b.ToTable("BaseItems");
 22416
 22417                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 22418
 22419                    b.HasData(
 22420                        new
 22421                        {
 22422                            Id = new Guid("00000000-0000-0000-0000-000000000001"),
 22423                            IsFolder = false,
 22424                            IsInMixedFolder = false,
 22425                            IsLocked = false,
 22426                            IsMovie = false,
 22427                            IsRepeat = false,
 22428                            IsSeries = false,
 22429                            IsVirtualItem = false,
 22430                            Name = "This is a placeholder item for UserData that has been detached from its original ite
 22431                            Type = "PLACEHOLDER"
 22432                        });
 22433                });
 434
 22435            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemImageInfo", b =>
 22436                {
 22437                    b.Property<Guid>("Id")
 22438                        .ValueGeneratedOnAdd()
 22439                        .HasColumnType("TEXT");
 22440
 22441                    b.Property<byte[]>("Blurhash")
 22442                        .HasColumnType("BLOB");
 22443
 22444                    b.Property<DateTime?>("DateModified")
 22445                        .HasColumnType("TEXT");
 22446
 22447                    b.Property<int>("Height")
 22448                        .HasColumnType("INTEGER");
 22449
 22450                    b.Property<int>("ImageType")
 22451                        .HasColumnType("INTEGER");
 22452
 22453                    b.Property<Guid>("ItemId")
 22454                        .HasColumnType("TEXT");
 22455
 22456                    b.Property<string>("Path")
 22457                        .IsRequired()
 22458                        .HasColumnType("TEXT");
 22459
 22460                    b.Property<int>("Width")
 22461                        .HasColumnType("INTEGER");
 22462
 22463                    b.HasKey("Id");
 22464
 22465                    b.HasIndex("ItemId", "ImageType");
 22466
 22467                    b.ToTable("BaseItemImageInfos");
 22468
 22469                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 22470                });
 471
 22472            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemMetadataField", b =>
 22473                {
 22474                    b.Property<int>("Id")
 22475                        .HasColumnType("INTEGER");
 22476
 22477                    b.Property<Guid>("ItemId")
 22478                        .HasColumnType("TEXT");
 22479
 22480                    b.HasKey("Id", "ItemId");
 22481
 22482                    b.HasIndex("ItemId");
 22483
 22484                    b.ToTable("BaseItemMetadataFields");
 22485
 22486                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 22487                });
 488
 22489            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemProvider", b =>
 22490                {
 22491                    b.Property<Guid>("ItemId")
 22492                        .HasColumnType("TEXT");
 22493
 22494                    b.Property<string>("ProviderId")
 22495                        .HasColumnType("TEXT");
 22496
 22497                    b.Property<string>("ProviderValue")
 22498                        .IsRequired()
 22499                        .HasColumnType("TEXT");
 22500
 22501                    b.HasKey("ItemId", "ProviderId");
 22502
 22503                    b.HasIndex("ProviderId", "ItemId", "ProviderValue");
 22504
 22505                    b.ToTable("BaseItemProviders");
 22506
 22507                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 22508                });
 509
 22510            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemTrailerType", b =>
 22511                {
 22512                    b.Property<int>("Id")
 22513                        .HasColumnType("INTEGER");
 22514
 22515                    b.Property<Guid>("ItemId")
 22516                        .HasColumnType("TEXT");
 22517
 22518                    b.HasKey("Id", "ItemId");
 22519
 22520                    b.HasIndex("ItemId");
 22521
 22522                    b.ToTable("BaseItemTrailerTypes");
 22523
 22524                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 22525                });
 526
 22527            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Chapter", b =>
 22528                {
 22529                    b.Property<Guid>("ItemId")
 22530                        .HasColumnType("TEXT");
 22531
 22532                    b.Property<int>("ChapterIndex")
 22533                        .HasColumnType("INTEGER");
 22534
 22535                    b.Property<DateTime?>("ImageDateModified")
 22536                        .HasColumnType("TEXT");
 22537
 22538                    b.Property<string>("ImagePath")
 22539                        .HasColumnType("TEXT");
 22540
 22541                    b.Property<string>("Name")
 22542                        .HasColumnType("TEXT");
 22543
 22544                    b.Property<long>("StartPositionTicks")
 22545                        .HasColumnType("INTEGER");
 22546
 22547                    b.HasKey("ItemId", "ChapterIndex");
 22548
 22549                    b.ToTable("Chapters");
 22550
 22551                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 22552                });
 553
 22554            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.CustomItemDisplayPreferences", b =>
 22555                {
 22556                    b.Property<int>("Id")
 22557                        .ValueGeneratedOnAdd()
 22558                        .HasColumnType("INTEGER");
 22559
 22560                    b.Property<string>("Client")
 22561                        .IsRequired()
 22562                        .HasMaxLength(32)
 22563                        .HasColumnType("TEXT");
 22564
 22565                    b.Property<Guid>("ItemId")
 22566                        .HasColumnType("TEXT");
 22567
 22568                    b.Property<string>("Key")
 22569                        .IsRequired()
 22570                        .HasColumnType("TEXT");
 22571
 22572                    b.Property<Guid>("UserId")
 22573                        .HasColumnType("TEXT");
 22574
 22575                    b.Property<string>("Value")
 22576                        .HasColumnType("TEXT");
 22577
 22578                    b.HasKey("Id");
 22579
 22580                    b.HasIndex("UserId", "ItemId", "Client", "Key")
 22581                        .IsUnique();
 22582
 22583                    b.ToTable("CustomItemDisplayPreferences");
 22584
 22585                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 22586                });
 587
 22588            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.DisplayPreferences", b =>
 22589                {
 22590                    b.Property<int>("Id")
 22591                        .ValueGeneratedOnAdd()
 22592                        .HasColumnType("INTEGER");
 22593
 22594                    b.Property<int>("ChromecastVersion")
 22595                        .HasColumnType("INTEGER");
 22596
 22597                    b.Property<string>("Client")
 22598                        .IsRequired()
 22599                        .HasMaxLength(32)
 22600                        .HasColumnType("TEXT");
 22601
 22602                    b.Property<string>("DashboardTheme")
 22603                        .HasMaxLength(32)
 22604                        .HasColumnType("TEXT");
 22605
 22606                    b.Property<bool>("EnableNextVideoInfoOverlay")
 22607                        .HasColumnType("INTEGER");
 22608
 22609                    b.Property<int?>("IndexBy")
 22610                        .HasColumnType("INTEGER");
 22611
 22612                    b.Property<Guid>("ItemId")
 22613                        .HasColumnType("TEXT");
 22614
 22615                    b.Property<int>("ScrollDirection")
 22616                        .HasColumnType("INTEGER");
 22617
 22618                    b.Property<bool>("ShowBackdrop")
 22619                        .HasColumnType("INTEGER");
 22620
 22621                    b.Property<bool>("ShowSidebar")
 22622                        .HasColumnType("INTEGER");
 22623
 22624                    b.Property<int>("SkipBackwardLength")
 22625                        .HasColumnType("INTEGER");
 22626
 22627                    b.Property<int>("SkipForwardLength")
 22628                        .HasColumnType("INTEGER");
 22629
 22630                    b.Property<string>("TvHome")
 22631                        .HasMaxLength(32)
 22632                        .HasColumnType("TEXT");
 22633
 22634                    b.Property<Guid>("UserId")
 22635                        .HasColumnType("TEXT");
 22636
 22637                    b.HasKey("Id");
 22638
 22639                    b.HasIndex("UserId", "ItemId", "Client")
 22640                        .IsUnique();
 22641
 22642                    b.ToTable("DisplayPreferences");
 22643
 22644                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 22645                });
 646
 22647            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.HomeSection", b =>
 22648                {
 22649                    b.Property<int>("Id")
 22650                        .ValueGeneratedOnAdd()
 22651                        .HasColumnType("INTEGER");
 22652
 22653                    b.Property<int>("DisplayPreferencesId")
 22654                        .HasColumnType("INTEGER");
 22655
 22656                    b.Property<int>("Order")
 22657                        .HasColumnType("INTEGER");
 22658
 22659                    b.Property<int>("Type")
 22660                        .HasColumnType("INTEGER");
 22661
 22662                    b.HasKey("Id");
 22663
 22664                    b.HasIndex("DisplayPreferencesId");
 22665
 22666                    b.ToTable("HomeSection");
 22667
 22668                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 22669                });
 670
 22671            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ImageInfo", b =>
 22672                {
 22673                    b.Property<int>("Id")
 22674                        .ValueGeneratedOnAdd()
 22675                        .HasColumnType("INTEGER");
 22676
 22677                    b.Property<DateTime>("LastModified")
 22678                        .HasColumnType("TEXT");
 22679
 22680                    b.Property<string>("Path")
 22681                        .IsRequired()
 22682                        .HasMaxLength(512)
 22683                        .HasColumnType("TEXT");
 22684
 22685                    b.Property<Guid?>("UserId")
 22686                        .HasColumnType("TEXT");
 22687
 22688                    b.HasKey("Id");
 22689
 22690                    b.HasIndex("UserId")
 22691                        .IsUnique();
 22692
 22693                    b.ToTable("ImageInfos");
 22694
 22695                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 22696                });
 697
 22698            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ItemDisplayPreferences", b =>
 22699                {
 22700                    b.Property<int>("Id")
 22701                        .ValueGeneratedOnAdd()
 22702                        .HasColumnType("INTEGER");
 22703
 22704                    b.Property<string>("Client")
 22705                        .IsRequired()
 22706                        .HasMaxLength(32)
 22707                        .HasColumnType("TEXT");
 22708
 22709                    b.Property<int?>("IndexBy")
 22710                        .HasColumnType("INTEGER");
 22711
 22712                    b.Property<Guid>("ItemId")
 22713                        .HasColumnType("TEXT");
 22714
 22715                    b.Property<bool>("RememberIndexing")
 22716                        .HasColumnType("INTEGER");
 22717
 22718                    b.Property<bool>("RememberSorting")
 22719                        .HasColumnType("INTEGER");
 22720
 22721                    b.Property<string>("SortBy")
 22722                        .IsRequired()
 22723                        .HasMaxLength(64)
 22724                        .HasColumnType("TEXT");
 22725
 22726                    b.Property<int>("SortOrder")
 22727                        .HasColumnType("INTEGER");
 22728
 22729                    b.Property<Guid>("UserId")
 22730                        .HasColumnType("TEXT");
 22731
 22732                    b.Property<int>("ViewType")
 22733                        .HasColumnType("INTEGER");
 22734
 22735                    b.HasKey("Id");
 22736
 22737                    b.HasIndex("UserId");
 22738
 22739                    b.ToTable("ItemDisplayPreferences");
 22740
 22741                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 22742                });
 743
 22744            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ItemValue", b =>
 22745                {
 22746                    b.Property<Guid>("ItemValueId")
 22747                        .ValueGeneratedOnAdd()
 22748                        .HasColumnType("TEXT");
 22749
 22750                    b.Property<string>("CleanValue")
 22751                        .IsRequired()
 22752                        .HasColumnType("TEXT");
 22753
 22754                    b.Property<int>("Type")
 22755                        .HasColumnType("INTEGER");
 22756
 22757                    b.Property<string>("Value")
 22758                        .IsRequired()
 22759                        .HasColumnType("TEXT");
 22760
 22761                    b.HasKey("ItemValueId");
 22762
 22763                    b.HasIndex("Type", "CleanValue");
 22764
 22765                    b.HasIndex("Type", "Value")
 22766                        .IsUnique();
 22767
 22768                    b.ToTable("ItemValues");
 22769
 22770                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 22771                });
 772
 22773            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ItemValueMap", b =>
 22774                {
 22775                    b.Property<Guid>("ItemValueId")
 22776                        .HasColumnType("TEXT");
 22777
 22778                    b.Property<Guid>("ItemId")
 22779                        .HasColumnType("TEXT");
 22780
 22781                    b.HasKey("ItemValueId", "ItemId");
 22782
 22783                    b.HasIndex("ItemId");
 22784
 22785                    b.ToTable("ItemValuesMap");
 22786
 22787                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 22788                });
 789
 22790            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.KeyframeData", b =>
 22791                {
 22792                    b.Property<Guid>("ItemId")
 22793                        .HasColumnType("TEXT");
 22794
 22795                    b.PrimitiveCollection<string>("KeyframeTicks")
 22796                        .HasColumnType("TEXT");
 22797
 22798                    b.Property<long>("TotalDuration")
 22799                        .HasColumnType("INTEGER");
 22800
 22801                    b.HasKey("ItemId");
 22802
 22803                    b.ToTable("KeyframeData");
 22804
 22805                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 22806                });
 807
 22808            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.LinkedChildEntity", b =>
 22809                {
 22810                    b.Property<Guid>("ParentId")
 22811                        .HasColumnType("TEXT");
 22812
 22813                    b.Property<Guid>("ChildId")
 22814                        .HasColumnType("TEXT");
 22815
 22816                    b.Property<int>("ChildType")
 22817                        .HasColumnType("INTEGER");
 22818
 22819                    b.Property<int?>("SortOrder")
 22820                        .HasColumnType("INTEGER");
 22821
 22822                    b.HasKey("ParentId", "ChildId");
 22823
 22824                    b.HasIndex("ChildId", "ChildType");
 22825
 22826                    b.HasIndex("ParentId", "ChildType");
 22827
 22828                    b.HasIndex("ParentId", "SortOrder");
 22829
 22830                    b.ToTable("LinkedChildren", (string)null);
 22831
 22832                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 22833                });
 834
 22835            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.MediaSegment", b =>
 22836                {
 22837                    b.Property<Guid>("Id")
 22838                        .ValueGeneratedOnAdd()
 22839                        .HasColumnType("TEXT");
 22840
 22841                    b.Property<long>("EndTicks")
 22842                        .HasColumnType("INTEGER");
 22843
 22844                    b.Property<Guid>("ItemId")
 22845                        .HasColumnType("TEXT");
 22846
 22847                    b.Property<string>("SegmentProviderId")
 22848                        .IsRequired()
 22849                        .HasColumnType("TEXT");
 22850
 22851                    b.Property<long>("StartTicks")
 22852                        .HasColumnType("INTEGER");
 22853
 22854                    b.Property<int>("Type")
 22855                        .HasColumnType("INTEGER");
 22856
 22857                    b.HasKey("Id");
 22858
 22859                    b.ToTable("MediaSegments");
 22860
 22861                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 22862                });
 863
 22864            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.MediaStreamInfo", b =>
 22865                {
 22866                    b.Property<Guid>("ItemId")
 22867                        .HasColumnType("TEXT");
 22868
 22869                    b.Property<int>("StreamIndex")
 22870                        .HasColumnType("INTEGER");
 22871
 22872                    b.Property<string>("AspectRatio")
 22873                        .HasColumnType("TEXT");
 22874
 22875                    b.Property<float?>("AverageFrameRate")
 22876                        .HasColumnType("REAL");
 22877
 22878                    b.Property<int?>("BitDepth")
 22879                        .HasColumnType("INTEGER");
 22880
 22881                    b.Property<int?>("BitRate")
 22882                        .HasColumnType("INTEGER");
 22883
 22884                    b.Property<int?>("BlPresentFlag")
 22885                        .HasColumnType("INTEGER");
 22886
 22887                    b.Property<string>("ChannelLayout")
 22888                        .HasColumnType("TEXT");
 22889
 22890                    b.Property<int?>("Channels")
 22891                        .HasColumnType("INTEGER");
 22892
 22893                    b.Property<string>("Codec")
 22894                        .HasColumnType("TEXT");
 22895
 22896                    b.Property<string>("CodecTag")
 22897                        .HasColumnType("TEXT");
 22898
 22899                    b.Property<string>("CodecTimeBase")
 22900                        .HasColumnType("TEXT");
 22901
 22902                    b.Property<string>("ColorPrimaries")
 22903                        .HasColumnType("TEXT");
 22904
 22905                    b.Property<string>("ColorSpace")
 22906                        .HasColumnType("TEXT");
 22907
 22908                    b.Property<string>("ColorTransfer")
 22909                        .HasColumnType("TEXT");
 22910
 22911                    b.Property<string>("Comment")
 22912                        .HasColumnType("TEXT");
 22913
 22914                    b.Property<int?>("DvBlSignalCompatibilityId")
 22915                        .HasColumnType("INTEGER");
 22916
 22917                    b.Property<int?>("DvLevel")
 22918                        .HasColumnType("INTEGER");
 22919
 22920                    b.Property<int?>("DvProfile")
 22921                        .HasColumnType("INTEGER");
 22922
 22923                    b.Property<int?>("DvVersionMajor")
 22924                        .HasColumnType("INTEGER");
 22925
 22926                    b.Property<int?>("DvVersionMinor")
 22927                        .HasColumnType("INTEGER");
 22928
 22929                    b.Property<int?>("ElPresentFlag")
 22930                        .HasColumnType("INTEGER");
 22931
 22932                    b.Property<bool?>("Hdr10PlusPresentFlag")
 22933                        .HasColumnType("INTEGER");
 22934
 22935                    b.Property<int?>("Height")
 22936                        .HasColumnType("INTEGER");
 22937
 22938                    b.Property<bool?>("IsAnamorphic")
 22939                        .HasColumnType("INTEGER");
 22940
 22941                    b.Property<bool?>("IsAvc")
 22942                        .HasColumnType("INTEGER");
 22943
 22944                    b.Property<bool>("IsDefault")
 22945                        .HasColumnType("INTEGER");
 22946
 22947                    b.Property<bool>("IsExternal")
 22948                        .HasColumnType("INTEGER");
 22949
 22950                    b.Property<bool>("IsForced")
 22951                        .HasColumnType("INTEGER");
 22952
 22953                    b.Property<bool?>("IsHearingImpaired")
 22954                        .HasColumnType("INTEGER");
 22955
 22956                    b.Property<bool?>("IsInterlaced")
 22957                        .HasColumnType("INTEGER");
 22958
 22959                    b.Property<bool>("IsOriginal")
 22960                        .HasColumnType("INTEGER");
 22961
 22962                    b.Property<string>("KeyFrames")
 22963                        .HasColumnType("TEXT");
 22964
 22965                    b.Property<string>("Language")
 22966                        .HasColumnType("TEXT");
 22967
 22968                    b.Property<float?>("Level")
 22969                        .HasColumnType("REAL");
 22970
 22971                    b.Property<string>("NalLengthSize")
 22972                        .HasColumnType("TEXT");
 22973
 22974                    b.Property<string>("Path")
 22975                        .HasColumnType("TEXT");
 22976
 22977                    b.Property<string>("PixelFormat")
 22978                        .HasColumnType("TEXT");
 22979
 22980                    b.Property<string>("Profile")
 22981                        .HasColumnType("TEXT");
 22982
 22983                    b.Property<float?>("RealFrameRate")
 22984                        .HasColumnType("REAL");
 22985
 22986                    b.Property<int?>("RefFrames")
 22987                        .HasColumnType("INTEGER");
 22988
 22989                    b.Property<int?>("Rotation")
 22990                        .HasColumnType("INTEGER");
 22991
 22992                    b.Property<int?>("RpuPresentFlag")
 22993                        .HasColumnType("INTEGER");
 22994
 22995                    b.Property<int?>("SampleRate")
 22996                        .HasColumnType("INTEGER");
 22997
 22998                    b.Property<int>("StreamType")
 22999                        .HasColumnType("INTEGER");
 221000
 221001                    b.Property<string>("TimeBase")
 221002                        .HasColumnType("TEXT");
 221003
 221004                    b.Property<string>("Title")
 221005                        .HasColumnType("TEXT");
 221006
 221007                    b.Property<int?>("Width")
 221008                        .HasColumnType("INTEGER");
 221009
 221010                    b.HasKey("ItemId", "StreamIndex");
 221011
 221012                    b.ToTable("MediaStreamInfos");
 221013
 221014                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 221015                });
 1016
 221017            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.People", b =>
 221018                {
 221019                    b.Property<Guid>("Id")
 221020                        .ValueGeneratedOnAdd()
 221021                        .HasColumnType("TEXT");
 221022
 221023                    b.Property<string>("Name")
 221024                        .IsRequired()
 221025                        .HasColumnType("TEXT");
 221026
 221027                    b.Property<string>("PersonType")
 221028                        .HasColumnType("TEXT");
 221029
 221030                    b.HasKey("Id");
 221031
 221032                    b.HasIndex("Name");
 221033
 221034                    b.ToTable("Peoples");
 221035
 221036                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 221037                });
 1038
 221039            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.PeopleBaseItemMap", b =>
 221040                {
 221041                    b.Property<Guid>("ItemId")
 221042                        .HasColumnType("TEXT");
 221043
 221044                    b.Property<Guid>("PeopleId")
 221045                        .HasColumnType("TEXT");
 221046
 221047                    b.Property<string>("Role")
 221048                        .HasColumnType("TEXT");
 221049
 221050                    b.Property<int?>("ListOrder")
 221051                        .HasColumnType("INTEGER");
 221052
 221053                    b.Property<int?>("SortOrder")
 221054                        .HasColumnType("INTEGER");
 221055
 221056                    b.HasKey("ItemId", "PeopleId", "Role");
 221057
 221058                    b.HasIndex("PeopleId");
 221059
 221060                    b.HasIndex("ItemId", "ListOrder");
 221061
 221062                    b.HasIndex("ItemId", "SortOrder");
 221063
 221064                    b.ToTable("PeopleBaseItemMap");
 221065
 221066                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 221067                });
 1068
 221069            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Permission", b =>
 221070                {
 221071                    b.Property<int>("Id")
 221072                        .ValueGeneratedOnAdd()
 221073                        .HasColumnType("INTEGER");
 221074
 221075                    b.Property<int>("Kind")
 221076                        .HasColumnType("INTEGER");
 221077
 221078                    b.Property<Guid?>("Permission_Permissions_Guid")
 221079                        .HasColumnType("TEXT");
 221080
 221081                    b.Property<uint>("RowVersion")
 221082                        .IsConcurrencyToken()
 221083                        .HasColumnType("INTEGER");
 221084
 221085                    b.Property<Guid?>("UserId")
 221086                        .HasColumnType("TEXT");
 221087
 221088                    b.Property<bool>("Value")
 221089                        .HasColumnType("INTEGER");
 221090
 221091                    b.HasKey("Id");
 221092
 221093                    b.HasIndex("UserId", "Kind")
 221094                        .IsUnique()
 221095                        .HasFilter("[UserId] IS NOT NULL");
 221096
 221097                    b.ToTable("Permissions");
 221098
 221099                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 221100                });
 1101
 221102            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Preference", b =>
 221103                {
 221104                    b.Property<int>("Id")
 221105                        .ValueGeneratedOnAdd()
 221106                        .HasColumnType("INTEGER");
 221107
 221108                    b.Property<int>("Kind")
 221109                        .HasColumnType("INTEGER");
 221110
 221111                    b.Property<Guid?>("Preference_Preferences_Guid")
 221112                        .HasColumnType("TEXT");
 221113
 221114                    b.Property<uint>("RowVersion")
 221115                        .IsConcurrencyToken()
 221116                        .HasColumnType("INTEGER");
 221117
 221118                    b.Property<Guid?>("UserId")
 221119                        .HasColumnType("TEXT");
 221120
 221121                    b.Property<string>("Value")
 221122                        .IsRequired()
 221123                        .HasMaxLength(65535)
 221124                        .HasColumnType("TEXT");
 221125
 221126                    b.HasKey("Id");
 221127
 221128                    b.HasIndex("UserId", "Kind")
 221129                        .IsUnique()
 221130                        .HasFilter("[UserId] IS NOT NULL");
 221131
 221132                    b.ToTable("Preferences");
 221133
 221134                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 221135                });
 1136
 221137            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Security.ApiKey", b =>
 221138                {
 221139                    b.Property<int>("Id")
 221140                        .ValueGeneratedOnAdd()
 221141                        .HasColumnType("INTEGER");
 221142
 221143                    b.Property<string>("AccessToken")
 221144                        .IsRequired()
 221145                        .HasColumnType("TEXT");
 221146
 221147                    b.Property<DateTime>("DateCreated")
 221148                        .HasColumnType("TEXT");
 221149
 221150                    b.Property<DateTime>("DateLastActivity")
 221151                        .HasColumnType("TEXT");
 221152
 221153                    b.Property<string>("Name")
 221154                        .IsRequired()
 221155                        .HasMaxLength(64)
 221156                        .HasColumnType("TEXT");
 221157
 221158                    b.HasKey("Id");
 221159
 221160                    b.HasIndex("AccessToken")
 221161                        .IsUnique();
 221162
 221163                    b.ToTable("ApiKeys");
 221164
 221165                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 221166                });
 1167
 221168            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Security.Device", b =>
 221169                {
 221170                    b.Property<int>("Id")
 221171                        .ValueGeneratedOnAdd()
 221172                        .HasColumnType("INTEGER");
 221173
 221174                    b.Property<string>("AccessToken")
 221175                        .IsRequired()
 221176                        .HasColumnType("TEXT");
 221177
 221178                    b.Property<string>("AppName")
 221179                        .IsRequired()
 221180                        .HasMaxLength(64)
 221181                        .HasColumnType("TEXT");
 221182
 221183                    b.Property<string>("AppVersion")
 221184                        .IsRequired()
 221185                        .HasMaxLength(32)
 221186                        .HasColumnType("TEXT");
 221187
 221188                    b.Property<DateTime>("DateCreated")
 221189                        .HasColumnType("TEXT");
 221190
 221191                    b.Property<DateTime>("DateLastActivity")
 221192                        .HasColumnType("TEXT");
 221193
 221194                    b.Property<DateTime>("DateModified")
 221195                        .HasColumnType("TEXT");
 221196
 221197                    b.Property<string>("DeviceId")
 221198                        .IsRequired()
 221199                        .HasMaxLength(256)
 221200                        .HasColumnType("TEXT");
 221201
 221202                    b.Property<string>("DeviceName")
 221203                        .IsRequired()
 221204                        .HasMaxLength(64)
 221205                        .HasColumnType("TEXT");
 221206
 221207                    b.Property<bool>("IsActive")
 221208                        .HasColumnType("INTEGER");
 221209
 221210                    b.Property<Guid>("UserId")
 221211                        .HasColumnType("TEXT");
 221212
 221213                    b.HasKey("Id");
 221214
 221215                    b.HasIndex("AccessToken", "DateLastActivity");
 221216
 221217                    b.HasIndex("DeviceId", "DateLastActivity");
 221218
 221219                    b.HasIndex("UserId", "DeviceId");
 221220
 221221                    b.ToTable("Devices");
 221222
 221223                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 221224                });
 1225
 221226            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Security.DeviceOptions", b =>
 221227                {
 221228                    b.Property<int>("Id")
 221229                        .ValueGeneratedOnAdd()
 221230                        .HasColumnType("INTEGER");
 221231
 221232                    b.Property<string>("CustomName")
 221233                        .HasColumnType("TEXT");
 221234
 221235                    b.Property<string>("DeviceId")
 221236                        .IsRequired()
 221237                        .HasColumnType("TEXT");
 221238
 221239                    b.HasKey("Id");
 221240
 221241                    b.HasIndex("DeviceId")
 221242                        .IsUnique();
 221243
 221244                    b.ToTable("DeviceOptions");
 221245
 221246                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 221247                });
 1248
 221249            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.TrickplayInfo", b =>
 221250                {
 221251                    b.Property<Guid>("ItemId")
 221252                        .HasColumnType("TEXT");
 221253
 221254                    b.Property<int>("Width")
 221255                        .HasColumnType("INTEGER");
 221256
 221257                    b.Property<int>("Bandwidth")
 221258                        .HasColumnType("INTEGER");
 221259
 221260                    b.Property<int>("Height")
 221261                        .HasColumnType("INTEGER");
 221262
 221263                    b.Property<int>("Interval")
 221264                        .HasColumnType("INTEGER");
 221265
 221266                    b.Property<int>("ThumbnailCount")
 221267                        .HasColumnType("INTEGER");
 221268
 221269                    b.Property<int>("TileHeight")
 221270                        .HasColumnType("INTEGER");
 221271
 221272                    b.Property<int>("TileWidth")
 221273                        .HasColumnType("INTEGER");
 221274
 221275                    b.HasKey("ItemId", "Width");
 221276
 221277                    b.ToTable("TrickplayInfos");
 221278
 221279                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 221280                });
 1281
 221282            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.User", b =>
 221283                {
 221284                    b.Property<Guid>("Id")
 221285                        .ValueGeneratedOnAdd()
 221286                        .HasColumnType("TEXT");
 221287
 221288                    b.Property<string>("AudioLanguagePreference")
 221289                        .HasMaxLength(255)
 221290                        .HasColumnType("TEXT");
 221291
 221292                    b.Property<string>("AuthenticationProviderId")
 221293                        .IsRequired()
 221294                        .HasMaxLength(255)
 221295                        .HasColumnType("TEXT");
 221296
 221297                    b.Property<string>("CastReceiverId")
 221298                        .HasMaxLength(32)
 221299                        .HasColumnType("TEXT");
 221300
 221301                    b.Property<bool>("DisplayCollectionsView")
 221302                        .HasColumnType("INTEGER");
 221303
 221304                    b.Property<bool>("DisplayMissingEpisodes")
 221305                        .HasColumnType("INTEGER");
 221306
 221307                    b.Property<bool>("EnableAutoLogin")
 221308                        .HasColumnType("INTEGER");
 221309
 221310                    b.Property<bool>("EnableLocalPassword")
 221311                        .HasColumnType("INTEGER");
 221312
 221313                    b.Property<bool>("EnableNextEpisodeAutoPlay")
 221314                        .HasColumnType("INTEGER");
 221315
 221316                    b.Property<bool>("EnableUserPreferenceAccess")
 221317                        .HasColumnType("INTEGER");
 221318
 221319                    b.Property<bool>("HidePlayedInLatest")
 221320                        .HasColumnType("INTEGER");
 221321
 221322                    b.Property<long>("InternalId")
 221323                        .HasColumnType("INTEGER");
 221324
 221325                    b.Property<int>("InvalidLoginAttemptCount")
 221326                        .HasColumnType("INTEGER");
 221327
 221328                    b.Property<DateTime?>("LastActivityDate")
 221329                        .HasColumnType("TEXT");
 221330
 221331                    b.Property<DateTime?>("LastLoginDate")
 221332                        .HasColumnType("TEXT");
 221333
 221334                    b.Property<int?>("LoginAttemptsBeforeLockout")
 221335                        .HasColumnType("INTEGER");
 221336
 221337                    b.Property<int>("MaxActiveSessions")
 221338                        .HasColumnType("INTEGER");
 221339
 221340                    b.Property<int?>("MaxParentalRatingScore")
 221341                        .HasColumnType("INTEGER");
 221342
 221343                    b.Property<int?>("MaxParentalRatingSubScore")
 221344                        .HasColumnType("INTEGER");
 221345
 221346                    b.Property<bool>("MustUpdatePassword")
 221347                        .HasColumnType("INTEGER");
 221348
 221349                    b.Property<string>("Password")
 221350                        .HasMaxLength(65535)
 221351                        .HasColumnType("TEXT");
 221352
 221353                    b.Property<string>("PasswordResetProviderId")
 221354                        .IsRequired()
 221355                        .HasMaxLength(255)
 221356                        .HasColumnType("TEXT");
 221357
 221358                    b.Property<bool>("PlayDefaultAudioTrack")
 221359                        .HasColumnType("INTEGER");
 221360
 221361                    b.Property<bool>("RememberAudioSelections")
 221362                        .HasColumnType("INTEGER");
 221363
 221364                    b.Property<bool>("RememberSubtitleSelections")
 221365                        .HasColumnType("INTEGER");
 221366
 221367                    b.Property<int?>("RemoteClientBitrateLimit")
 221368                        .HasColumnType("INTEGER");
 221369
 221370                    b.Property<uint>("RowVersion")
 221371                        .IsConcurrencyToken()
 221372                        .HasColumnType("INTEGER");
 221373
 221374                    b.Property<string>("SubtitleLanguagePreference")
 221375                        .HasMaxLength(255)
 221376                        .HasColumnType("TEXT");
 221377
 221378                    b.Property<int>("SubtitleMode")
 221379                        .HasColumnType("INTEGER");
 221380
 221381                    b.Property<int>("SyncPlayAccess")
 221382                        .HasColumnType("INTEGER");
 221383
 221384                    b.Property<string>("Username")
 221385                        .IsRequired()
 221386                        .HasMaxLength(255)
 221387                        .HasColumnType("TEXT");
 221388
 221389                    b.HasKey("Id");
 221390
 221391                    b.HasIndex("Username")
 221392                        .IsUnique();
 221393
 221394                    b.ToTable("Users");
 221395
 221396                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 221397                });
 1398
 221399            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.UserData", b =>
 221400                {
 221401                    b.Property<Guid>("ItemId")
 221402                        .HasColumnType("TEXT");
 221403
 221404                    b.Property<Guid>("UserId")
 221405                        .HasColumnType("TEXT");
 221406
 221407                    b.Property<string>("CustomDataKey")
 221408                        .HasColumnType("TEXT");
 221409
 221410                    b.Property<int?>("AudioStreamIndex")
 221411                        .HasColumnType("INTEGER");
 221412
 221413                    b.Property<bool>("IsFavorite")
 221414                        .HasColumnType("INTEGER");
 221415
 221416                    b.Property<DateTime?>("LastPlayedDate")
 221417                        .HasColumnType("TEXT");
 221418
 221419                    b.Property<bool?>("Likes")
 221420                        .HasColumnType("INTEGER");
 221421
 221422                    b.Property<int>("PlayCount")
 221423                        .HasColumnType("INTEGER");
 221424
 221425                    b.Property<long>("PlaybackPositionTicks")
 221426                        .HasColumnType("INTEGER");
 221427
 221428                    b.Property<bool>("Played")
 221429                        .HasColumnType("INTEGER");
 221430
 221431                    b.Property<double?>("Rating")
 221432                        .HasColumnType("REAL");
 221433
 221434                    b.Property<DateTime?>("RetentionDate")
 221435                        .HasColumnType("TEXT");
 221436
 221437                    b.Property<int?>("SubtitleStreamIndex")
 221438                        .HasColumnType("INTEGER");
 221439
 221440                    b.HasKey("ItemId", "UserId", "CustomDataKey");
 221441
 221442                    b.HasIndex("ItemId", "UserId", "IsFavorite");
 221443
 221444                    b.HasIndex("ItemId", "UserId", "LastPlayedDate");
 221445
 221446                    b.HasIndex("ItemId", "UserId", "PlaybackPositionTicks");
 221447
 221448                    b.HasIndex("ItemId", "UserId", "Played");
 221449
 221450                    b.HasIndex("UserId", "IsFavorite", "ItemId");
 221451
 221452                    b.HasIndex("UserId", "ItemId", "LastPlayedDate");
 221453
 221454                    b.HasIndex("UserId", "Played", "ItemId");
 221455
 221456                    b.ToTable("UserData");
 221457
 221458                    b.HasAnnotation("Sqlite:UseSqlReturningClause", false);
 221459                });
 1460
 221461            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.AccessSchedule", b =>
 221462                {
 221463                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", null)
 221464                        .WithMany("AccessSchedules")
 221465                        .HasForeignKey("UserId")
 221466                        .OnDelete(DeleteBehavior.Cascade)
 221467                        .IsRequired();
 221468                });
 1469
 221470            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.AncestorId", b =>
 221471                {
 221472                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 221473                        .WithMany("Parents")
 221474                        .HasForeignKey("ItemId")
 221475                        .OnDelete(DeleteBehavior.Cascade)
 221476                        .IsRequired();
 221477
 221478                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "ParentItem")
 221479                        .WithMany("Children")
 221480                        .HasForeignKey("ParentItemId")
 221481                        .OnDelete(DeleteBehavior.Cascade)
 221482                        .IsRequired();
 221483
 221484                    b.Navigation("Item");
 221485
 221486                    b.Navigation("ParentItem");
 221487                });
 1488
 221489            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.AttachmentStreamInfo", b =>
 221490                {
 221491                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 221492                        .WithMany()
 221493                        .HasForeignKey("ItemId")
 221494                        .OnDelete(DeleteBehavior.Cascade)
 221495                        .IsRequired();
 221496
 221497                    b.Navigation("Item");
 221498                });
 1499
 221500            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemEntity", b =>
 221501                {
 221502                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Owner")
 221503                        .WithMany("Extras")
 221504                        .HasForeignKey("OwnerId")
 221505                        .OnDelete(DeleteBehavior.NoAction);
 221506
 221507                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "DirectParent")
 221508                        .WithMany("DirectChildren")
 221509                        .HasForeignKey("ParentId")
 221510                        .OnDelete(DeleteBehavior.Cascade);
 221511
 221512                    b.Navigation("DirectParent");
 221513
 221514                    b.Navigation("Owner");
 221515                });
 1516
 221517            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemImageInfo", b =>
 221518                {
 221519                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 221520                        .WithMany("Images")
 221521                        .HasForeignKey("ItemId")
 221522                        .OnDelete(DeleteBehavior.Cascade)
 221523                        .IsRequired();
 221524
 221525                    b.Navigation("Item");
 221526                });
 1527
 221528            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemMetadataField", b =>
 221529                {
 221530                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 221531                        .WithMany("LockedFields")
 221532                        .HasForeignKey("ItemId")
 221533                        .OnDelete(DeleteBehavior.Cascade)
 221534                        .IsRequired();
 221535
 221536                    b.Navigation("Item");
 221537                });
 1538
 221539            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemProvider", b =>
 221540                {
 221541                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 221542                        .WithMany("Provider")
 221543                        .HasForeignKey("ItemId")
 221544                        .OnDelete(DeleteBehavior.Cascade)
 221545                        .IsRequired();
 221546
 221547                    b.Navigation("Item");
 221548                });
 1549
 221550            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemTrailerType", b =>
 221551                {
 221552                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 221553                        .WithMany("TrailerTypes")
 221554                        .HasForeignKey("ItemId")
 221555                        .OnDelete(DeleteBehavior.Cascade)
 221556                        .IsRequired();
 221557
 221558                    b.Navigation("Item");
 221559                });
 1560
 221561            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Chapter", b =>
 221562                {
 221563                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 221564                        .WithMany("Chapters")
 221565                        .HasForeignKey("ItemId")
 221566                        .OnDelete(DeleteBehavior.Cascade)
 221567                        .IsRequired();
 221568
 221569                    b.Navigation("Item");
 221570                });
 1571
 221572            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.DisplayPreferences", b =>
 221573                {
 221574                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", null)
 221575                        .WithMany("DisplayPreferences")
 221576                        .HasForeignKey("UserId")
 221577                        .OnDelete(DeleteBehavior.Cascade)
 221578                        .IsRequired();
 221579                });
 1580
 221581            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.HomeSection", b =>
 221582                {
 221583                    b.HasOne("Jellyfin.Database.Implementations.Entities.DisplayPreferences", null)
 221584                        .WithMany("HomeSections")
 221585                        .HasForeignKey("DisplayPreferencesId")
 221586                        .OnDelete(DeleteBehavior.Cascade)
 221587                        .IsRequired();
 221588                });
 1589
 221590            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ImageInfo", b =>
 221591                {
 221592                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", null)
 221593                        .WithOne("ProfileImage")
 221594                        .HasForeignKey("Jellyfin.Database.Implementations.Entities.ImageInfo", "UserId")
 221595                        .OnDelete(DeleteBehavior.Cascade);
 221596                });
 1597
 221598            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ItemDisplayPreferences", b =>
 221599                {
 221600                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", null)
 221601                        .WithMany("ItemDisplayPreferences")
 221602                        .HasForeignKey("UserId")
 221603                        .OnDelete(DeleteBehavior.Cascade)
 221604                        .IsRequired();
 221605                });
 1606
 221607            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ItemValueMap", b =>
 221608                {
 221609                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 221610                        .WithMany("ItemValues")
 221611                        .HasForeignKey("ItemId")
 221612                        .OnDelete(DeleteBehavior.Cascade)
 221613                        .IsRequired();
 221614
 221615                    b.HasOne("Jellyfin.Database.Implementations.Entities.ItemValue", "ItemValue")
 221616                        .WithMany("BaseItemsMap")
 221617                        .HasForeignKey("ItemValueId")
 221618                        .OnDelete(DeleteBehavior.Cascade)
 221619                        .IsRequired();
 221620
 221621                    b.Navigation("Item");
 221622
 221623                    b.Navigation("ItemValue");
 221624                });
 1625
 221626            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.KeyframeData", b =>
 221627                {
 221628                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 221629                        .WithMany()
 221630                        .HasForeignKey("ItemId")
 221631                        .OnDelete(DeleteBehavior.Cascade)
 221632                        .IsRequired();
 221633
 221634                    b.Navigation("Item");
 221635                });
 1636
 221637            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.LinkedChildEntity", b =>
 221638                {
 221639                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Child")
 221640                        .WithMany("LinkedChildOfEntities")
 221641                        .HasForeignKey("ChildId")
 221642                        .OnDelete(DeleteBehavior.NoAction)
 221643                        .IsRequired();
 221644
 221645                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Parent")
 221646                        .WithMany("LinkedChildEntities")
 221647                        .HasForeignKey("ParentId")
 221648                        .OnDelete(DeleteBehavior.NoAction)
 221649                        .IsRequired();
 221650
 221651                    b.Navigation("Child");
 221652
 221653                    b.Navigation("Parent");
 221654                });
 1655
 221656            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.MediaStreamInfo", b =>
 221657                {
 221658                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 221659                        .WithMany("MediaStreams")
 221660                        .HasForeignKey("ItemId")
 221661                        .OnDelete(DeleteBehavior.Cascade)
 221662                        .IsRequired();
 221663
 221664                    b.Navigation("Item");
 221665                });
 1666
 221667            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.PeopleBaseItemMap", b =>
 221668                {
 221669                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 221670                        .WithMany("Peoples")
 221671                        .HasForeignKey("ItemId")
 221672                        .OnDelete(DeleteBehavior.Cascade)
 221673                        .IsRequired();
 221674
 221675                    b.HasOne("Jellyfin.Database.Implementations.Entities.People", "People")
 221676                        .WithMany("BaseItems")
 221677                        .HasForeignKey("PeopleId")
 221678                        .OnDelete(DeleteBehavior.Cascade)
 221679                        .IsRequired();
 221680
 221681                    b.Navigation("Item");
 221682
 221683                    b.Navigation("People");
 221684                });
 1685
 221686            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Permission", b =>
 221687                {
 221688                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", null)
 221689                        .WithMany("Permissions")
 221690                        .HasForeignKey("UserId")
 221691                        .OnDelete(DeleteBehavior.Cascade);
 221692                });
 1693
 221694            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Preference", b =>
 221695                {
 221696                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", null)
 221697                        .WithMany("Preferences")
 221698                        .HasForeignKey("UserId")
 221699                        .OnDelete(DeleteBehavior.Cascade);
 221700                });
 1701
 221702            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.Security.Device", b =>
 221703                {
 221704                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", "User")
 221705                        .WithMany()
 221706                        .HasForeignKey("UserId")
 221707                        .OnDelete(DeleteBehavior.Cascade)
 221708                        .IsRequired();
 221709
 221710                    b.Navigation("User");
 221711                });
 1712
 221713            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.UserData", b =>
 221714                {
 221715                    b.HasOne("Jellyfin.Database.Implementations.Entities.BaseItemEntity", "Item")
 221716                        .WithMany("UserData")
 221717                        .HasForeignKey("ItemId")
 221718                        .OnDelete(DeleteBehavior.Cascade)
 221719                        .IsRequired();
 221720
 221721                    b.HasOne("Jellyfin.Database.Implementations.Entities.User", "User")
 221722                        .WithMany()
 221723                        .HasForeignKey("UserId")
 221724                        .OnDelete(DeleteBehavior.Cascade)
 221725                        .IsRequired();
 221726
 221727                    b.Navigation("Item");
 221728
 221729                    b.Navigation("User");
 221730                });
 1731
 221732            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.BaseItemEntity", b =>
 221733                {
 221734                    b.Navigation("Chapters");
 221735
 221736                    b.Navigation("Children");
 221737
 221738                    b.Navigation("DirectChildren");
 221739
 221740                    b.Navigation("Extras");
 221741
 221742                    b.Navigation("Images");
 221743
 221744                    b.Navigation("ItemValues");
 221745
 221746                    b.Navigation("LinkedChildEntities");
 221747
 221748                    b.Navigation("LinkedChildOfEntities");
 221749
 221750                    b.Navigation("LockedFields");
 221751
 221752                    b.Navigation("MediaStreams");
 221753
 221754                    b.Navigation("Parents");
 221755
 221756                    b.Navigation("Peoples");
 221757
 221758                    b.Navigation("Provider");
 221759
 221760                    b.Navigation("TrailerTypes");
 221761
 221762                    b.Navigation("UserData");
 221763                });
 1764
 221765            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.DisplayPreferences", b =>
 221766                {
 221767                    b.Navigation("HomeSections");
 221768                });
 1769
 221770            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.ItemValue", b =>
 221771                {
 221772                    b.Navigation("BaseItemsMap");
 221773                });
 1774
 221775            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.People", b =>
 221776                {
 221777                    b.Navigation("BaseItems");
 221778                });
 1779
 221780            modelBuilder.Entity("Jellyfin.Database.Implementations.Entities.User", b =>
 221781                {
 221782                    b.Navigation("AccessSchedules");
 221783
 221784                    b.Navigation("DisplayPreferences");
 221785
 221786                    b.Navigation("ItemDisplayPreferences");
 221787
 221788                    b.Navigation("Permissions");
 221789
 221790                    b.Navigation("Preferences");
 221791
 221792                    b.Navigation("ProfileImage");
 221793                });
 1794#pragma warning restore 612, 618
 221795        }
 1796    }
 1797}