// <auto-generated />
using System;
using System.Collections.Generic;
using Kavita.Database;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;

#nullable disable

namespace Kavita.Database.Migrations
{
    [DbContext(typeof(DataContext))]
    [Migration("20251229144718_AddDeviceIdsToReadingProfiles")]
    partial class AddDeviceIdsToReadingProfiles
    {
        /// <inheritdoc />
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder.HasAnnotation("ProductVersion", "10.0.1");

            modelBuilder.Entity("API.Entities.AppRole", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasColumnType("TEXT");

                    b.Property<string>("Name")
                        .HasMaxLength(256)
                        .HasColumnType("TEXT");

                    b.Property<string>("NormalizedName")
                        .HasMaxLength(256)
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("NormalizedName")
                        .IsUnique()
                        .HasDatabaseName("RoleNameIndex");

                    b.ToTable("AspNetRoles", (string)null);
                });

            modelBuilder.Entity("API.Entities.AppUser", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AccessFailedCount")
                        .HasColumnType("INTEGER");

                    b.Property<int>("AgeRestriction")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("AgeRestrictionIncludeUnknowns")
                        .HasColumnType("INTEGER");

                    b.Property<string>("AniListAccessToken")
                        .HasColumnType("TEXT");

                    b.Property<string>("ApiKey")
                        .HasColumnType("TEXT");

                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasColumnType("TEXT");

                    b.Property<string>("ConfirmationToken")
                        .HasColumnType("TEXT");

                    b.Property<string>("CoverImage")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("Email")
                        .HasMaxLength(256)
                        .HasColumnType("TEXT");

                    b.Property<bool>("EmailConfirmed")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("HasRunScrobbleEventGeneration")
                        .HasColumnType("INTEGER");

                    b.Property<int>("IdentityProvider")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(0);

                    b.Property<DateTime>("LastActive")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastActiveUtc")
                        .HasColumnType("TEXT");

                    b.Property<bool>("LockoutEnabled")
                        .HasColumnType("INTEGER");

                    b.Property<DateTimeOffset?>("LockoutEnd")
                        .HasColumnType("TEXT");

                    b.Property<string>("MalAccessToken")
                        .HasColumnType("TEXT");

                    b.Property<string>("MalUserName")
                        .HasColumnType("TEXT");

                    b.Property<string>("NormalizedEmail")
                        .HasMaxLength(256)
                        .HasColumnType("TEXT");

                    b.Property<string>("NormalizedUserName")
                        .HasMaxLength(256)
                        .HasColumnType("TEXT");

                    b.Property<string>("OidcId")
                        .HasColumnType("TEXT");

                    b.Property<string>("PasswordHash")
                        .HasColumnType("TEXT");

                    b.Property<string>("PhoneNumber")
                        .HasColumnType("TEXT");

                    b.Property<bool>("PhoneNumberConfirmed")
                        .HasColumnType("INTEGER");

                    b.Property<string>("PrimaryColor")
                        .HasColumnType("TEXT");

                    b.Property<uint>("RowVersion")
                        .IsConcurrencyToken()
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("ScrobbleEventGenerationRan")
                        .HasColumnType("TEXT");

                    b.Property<string>("SecondaryColor")
                        .HasColumnType("TEXT");

                    b.Property<string>("SecurityStamp")
                        .HasColumnType("TEXT");

                    b.Property<bool>("TwoFactorEnabled")
                        .HasColumnType("INTEGER");

                    b.Property<string>("UserName")
                        .HasMaxLength(256)
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("NormalizedEmail")
                        .HasDatabaseName("EmailIndex");

                    b.HasIndex("NormalizedUserName")
                        .IsUnique()
                        .HasDatabaseName("UserNameIndex");

                    b.ToTable("AspNetUsers", (string)null);
                });

            modelBuilder.Entity("API.Entities.AppUserAnnotation", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("ChapterId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("ChapterTitle")
                        .HasColumnType("TEXT");

                    b.Property<string>("Comment")
                        .HasColumnType("TEXT");

                    b.Property<string>("CommentHtml")
                        .HasColumnType("TEXT");

                    b.Property<string>("CommentPlainText")
                        .HasColumnType("TEXT");

                    b.Property<bool>("ContainsSpoiler")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Context")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("EndingXPath")
                        .HasColumnType("TEXT");

                    b.Property<int>("HighlightCount")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<int>("LibraryId")
                        .HasColumnType("INTEGER");

                    b.PrimitiveCollection<string>("Likes")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("[]");

                    b.Property<int>("PageNumber")
                        .HasColumnType("INTEGER");

                    b.Property<int>("SelectedSlotIndex")
                        .HasColumnType("INTEGER");

                    b.Property<string>("SelectedText")
                        .HasColumnType("TEXT");

                    b.Property<int>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("VolumeId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("XPath")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.HasIndex("ChapterId");

                    b.HasIndex("LibraryId");

                    b.HasIndex("SeriesId");

                    b.ToTable("AppUserAnnotation");
                });

            modelBuilder.Entity("API.Entities.AppUserBookmark", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("ChapterId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("ChapterTitle")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("FileName")
                        .HasColumnType("TEXT");

                    b.Property<int>("ImageOffset")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<int>("Page")
                        .HasColumnType("INTEGER");

                    b.Property<int>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("VolumeId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("XPath")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("ChapterId");

                    b.HasIndex("SeriesId");

                    b.HasIndex("VolumeId");

                    b.HasIndex("AppUserId", "SeriesId")
                        .HasDatabaseName("IX_AppUserBookmark_AppUserId_SeriesId");

                    b.ToTable("AppUserBookmark");
                });

            modelBuilder.Entity("API.Entities.AppUserCollection", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AgeRating")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(0);

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("CoverImage")
                        .HasColumnType("TEXT");

                    b.Property<bool>("CoverImageLocked")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastSyncUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("MissingSeriesFromSource")
                        .HasColumnType("TEXT");

                    b.Property<string>("NormalizedTitle")
                        .HasColumnType("TEXT");

                    b.Property<string>("PrimaryColor")
                        .HasColumnType("TEXT");

                    b.Property<bool>("Promoted")
                        .HasColumnType("INTEGER");

                    b.Property<string>("SecondaryColor")
                        .HasColumnType("TEXT");

                    b.Property<int>("Source")
                        .HasColumnType("INTEGER");

                    b.Property<string>("SourceUrl")
                        .HasColumnType("TEXT");

                    b.Property<string>("Summary")
                        .HasColumnType("TEXT");

                    b.Property<string>("Title")
                        .HasColumnType("TEXT");

                    b.Property<int>("TotalSourceCount")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.ToTable("AppUserCollection");
                });

            modelBuilder.Entity("API.Entities.AppUserDashboardStream", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("IsProvided")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Name")
                        .HasColumnType("TEXT");

                    b.Property<int>("Order")
                        .HasColumnType("INTEGER");

                    b.Property<int?>("SmartFilterId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("StreamType")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(4);

                    b.Property<bool>("Visible")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.HasIndex("SmartFilterId");

                    b.HasIndex("Visible");

                    b.ToTable("AppUserDashboardStream");
                });

            modelBuilder.Entity("API.Entities.AppUserExternalSource", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<string>("ApiKey")
                        .HasColumnType("TEXT");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Host")
                        .HasColumnType("TEXT");

                    b.Property<string>("Name")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.ToTable("AppUserExternalSource");
                });

            modelBuilder.Entity("API.Entities.AppUserOnDeckRemoval", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.HasIndex("SeriesId");

                    b.ToTable("AppUserOnDeckRemoval");
                });

            modelBuilder.Entity("API.Entities.AppUserRating", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<bool>("HasBeenRated")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<float>("Rating")
                        .HasColumnType("REAL");

                    b.Property<string>("Review")
                        .HasColumnType("TEXT");

                    b.Property<int>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.HasIndex("SeriesId");

                    b.ToTable("AppUserRating");
                });

            modelBuilder.Entity("API.Entities.AppUserReadingProfile", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<bool>("AllowAutomaticWebtoonReaderDetection")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(true);

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("AutoCloseMenu")
                        .HasColumnType("INTEGER");

                    b.Property<string>("BackgroundColor")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("#000000");

                    b.Property<string>("BookReaderFontFamily")
                        .HasColumnType("TEXT");

                    b.Property<int>("BookReaderFontSize")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("BookReaderImmersiveMode")
                        .HasColumnType("INTEGER");

                    b.Property<int>("BookReaderLayoutMode")
                        .HasColumnType("INTEGER");

                    b.Property<int>("BookReaderLineSpacing")
                        .HasColumnType("INTEGER");

                    b.Property<int>("BookReaderMargin")
                        .HasColumnType("INTEGER");

                    b.Property<int>("BookReaderReadingDirection")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("BookReaderTapToPaginate")
                        .HasColumnType("INTEGER");

                    b.Property<int>("BookReaderWritingStyle")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(0);

                    b.Property<string>("BookThemeName")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("Dark");

                    b.PrimitiveCollection<string>("DeviceIds")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("[]");

                    b.Property<int>("DisableWidthOverride")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("EmulateBook")
                        .HasColumnType("INTEGER");

                    b.Property<int>("Kind")
                        .HasColumnType("INTEGER");

                    b.Property<int>("LayoutMode")
                        .HasColumnType("INTEGER");

                    b.PrimitiveCollection<string>("LibraryIds")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("[]");

                    b.Property<string>("Name")
                        .HasColumnType("TEXT");

                    b.Property<string>("NormalizedName")
                        .HasColumnType("TEXT");

                    b.Property<int>("PageSplitOption")
                        .HasColumnType("INTEGER");

                    b.Property<int>("PdfScrollMode")
                        .HasColumnType("INTEGER");

                    b.Property<int>("PdfSpreadMode")
                        .HasColumnType("INTEGER");

                    b.Property<int>("PdfTheme")
                        .HasColumnType("INTEGER");

                    b.Property<int>("ReaderMode")
                        .HasColumnType("INTEGER");

                    b.Property<int>("ReadingDirection")
                        .HasColumnType("INTEGER");

                    b.Property<int>("ScalingOption")
                        .HasColumnType("INTEGER");

                    b.PrimitiveCollection<string>("SeriesIds")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("[]");

                    b.Property<bool>("ShowScreenHints")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("SwipeToPaginate")
                        .HasColumnType("INTEGER");

                    b.Property<int?>("WidthOverride")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.ToTable("AppUserReadingProfiles");
                });

            modelBuilder.Entity("API.Entities.AppUserRole", b =>
                {
                    b.Property<int>("UserId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("RoleId")
                        .HasColumnType("INTEGER");

                    b.HasKey("UserId", "RoleId");

                    b.HasIndex("RoleId");

                    b.ToTable("AspNetUserRoles", (string)null);
                });

            modelBuilder.Entity("API.Entities.AppUserSideNavStream", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<int?>("ExternalSourceId")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("IsProvided")
                        .HasColumnType("INTEGER");

                    b.Property<int?>("LibraryId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Name")
                        .HasColumnType("TEXT");

                    b.Property<int>("Order")
                        .HasColumnType("INTEGER");

                    b.Property<int?>("SmartFilterId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("StreamType")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(5);

                    b.Property<bool>("Visible")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.HasIndex("SmartFilterId");

                    b.HasIndex("Visible");

                    b.ToTable("AppUserSideNavStream");
                });

            modelBuilder.Entity("API.Entities.AppUserSmartFilter", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Filter")
                        .HasColumnType("TEXT");

                    b.Property<string>("Name")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.ToTable("AppUserSmartFilter");
                });

            modelBuilder.Entity("API.Entities.AppUserTableOfContent", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("BookScrollId")
                        .HasColumnType("TEXT");

                    b.Property<int>("ChapterId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("ChapterTitle")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<int>("LibraryId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("PageNumber")
                        .HasColumnType("INTEGER");

                    b.Property<string>("SelectedText")
                        .HasColumnType("TEXT");

                    b.Property<int>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Title")
                        .HasColumnType("TEXT");

                    b.Property<int>("VolumeId")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.HasIndex("ChapterId");

                    b.HasIndex("SeriesId");

                    b.ToTable("AppUserTableOfContent");
                });

            modelBuilder.Entity("API.Entities.AppUserWantToRead", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.HasIndex("SeriesId");

                    b.ToTable("AppUserWantToRead");
                });

            modelBuilder.Entity("API.Entities.Chapter", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AgeRating")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("AgeRatingLocked")
                        .HasColumnType("INTEGER");

                    b.Property<int>("AlternateCount")
                        .HasColumnType("INTEGER");

                    b.Property<string>("AlternateNumber")
                        .HasColumnType("TEXT");

                    b.Property<string>("AlternateSeries")
                        .HasColumnType("TEXT");

                    b.Property<float>("AverageExternalRating")
                        .HasColumnType("REAL");

                    b.Property<float>("AvgHoursToRead")
                        .HasColumnType("REAL");

                    b.Property<bool>("CharacterLocked")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("ColoristLocked")
                        .HasColumnType("INTEGER");

                    b.Property<int>("Count")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("CoverArtistLocked")
                        .HasColumnType("INTEGER");

                    b.Property<string>("CoverImage")
                        .HasColumnType("TEXT");

                    b.Property<bool>("CoverImageLocked")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<bool>("EditorLocked")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("GenresLocked")
                        .HasColumnType("INTEGER");

                    b.Property<string>("ISBN")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("");

                    b.Property<bool>("ISBNLocked")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("ImprintLocked")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("InkerLocked")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("IsSpecial")
                        .HasColumnType("INTEGER");

                    b.Property<string>("KPlusOverrides")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("[]");

                    b.Property<string>("Language")
                        .HasColumnType("TEXT");

                    b.Property<bool>("LanguageLocked")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<bool>("LettererLocked")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("LocationLocked")
                        .HasColumnType("INTEGER");

                    b.Property<int>("MaxHoursToRead")
                        .HasColumnType("INTEGER");

                    b.Property<float>("MaxNumber")
                        .HasColumnType("REAL");

                    b.Property<int>("MinHoursToRead")
                        .HasColumnType("INTEGER");

                    b.Property<float>("MinNumber")
                        .HasColumnType("REAL");

                    b.Property<string>("Number")
                        .HasColumnType("TEXT");

                    b.Property<int>("Pages")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("PencillerLocked")
                        .HasColumnType("INTEGER");

                    b.Property<string>("PrimaryColor")
                        .HasColumnType("TEXT");

                    b.Property<bool>("PublisherLocked")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Range")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("ReleaseDate")
                        .HasColumnType("TEXT");

                    b.Property<bool>("ReleaseDateLocked")
                        .HasColumnType("INTEGER");

                    b.Property<string>("SecondaryColor")
                        .HasColumnType("TEXT");

                    b.Property<string>("SeriesGroup")
                        .HasColumnType("TEXT");

                    b.Property<float>("SortOrder")
                        .HasColumnType("REAL");

                    b.Property<bool>("SortOrderLocked")
                        .HasColumnType("INTEGER");

                    b.Property<string>("StoryArc")
                        .HasColumnType("TEXT");

                    b.Property<string>("StoryArcNumber")
                        .HasColumnType("TEXT");

                    b.Property<string>("Summary")
                        .HasColumnType("TEXT");

                    b.Property<bool>("SummaryLocked")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("TagsLocked")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("TeamLocked")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Title")
                        .HasColumnType("TEXT");

                    b.Property<string>("TitleName")
                        .HasColumnType("TEXT");

                    b.Property<bool>("TitleNameLocked")
                        .HasColumnType("INTEGER");

                    b.Property<int>("TotalCount")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("TranslatorLocked")
                        .HasColumnType("INTEGER");

                    b.Property<int>("VolumeId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("WebLinks")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("");

                    b.Property<long>("WordCount")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("WriterLocked")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("TitleName")
                        .HasDatabaseName("IX_Chapter_TitleName");

                    b.HasIndex("VolumeId");

                    b.ToTable("Chapter");
                });

            modelBuilder.Entity("API.Entities.ClientDeviceHistory", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("CapturedAtUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("ClientInfo")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("{\"UserAgent\":\"\",\"IpAddress\":\"\",\"AuthType\":0,\"ClientType\":0,\"AppVersion\":null,\"Browser\":null,\"BrowserVersion\":null,\"Platform\":0,\"DeviceType\":null,\"ScreenWidth\":null,\"ScreenHeight\":null,\"Orientation\":null,\"CapturedAt\":\"0001-01-01T00:00:00\"}");

                    b.Property<int>("DeviceId")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("DeviceId");

                    b.ToTable("ClientDeviceHistory");
                });

            modelBuilder.Entity("API.Entities.CollectionTag", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<string>("CoverImage")
                        .HasColumnType("TEXT");

                    b.Property<bool>("CoverImageLocked")
                        .HasColumnType("INTEGER");

                    b.Property<string>("NormalizedTitle")
                        .HasColumnType("TEXT");

                    b.Property<bool>("Promoted")
                        .HasColumnType("INTEGER");

                    b.Property<uint>("RowVersion")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Summary")
                        .HasColumnType("TEXT");

                    b.Property<string>("Title")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("Id", "Promoted")
                        .IsUnique();

                    b.ToTable("CollectionTag");
                });

            modelBuilder.Entity("API.Entities.Device", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("EmailAddress")
                        .HasColumnType("TEXT");

                    b.Property<string>("IpAddress")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastUsed")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastUsedUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("Name")
                        .HasColumnType("TEXT");

                    b.Property<int>("Platform")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.ToTable("Device");
                });

            modelBuilder.Entity("API.Entities.EmailHistory", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Body")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("DeliveryStatus")
                        .HasColumnType("TEXT");

                    b.Property<string>("EmailTemplate")
                        .HasColumnType("TEXT");

                    b.Property<string>("ErrorMessage")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("SendDate")
                        .HasColumnType("TEXT");

                    b.Property<bool>("Sent")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Subject")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.HasIndex("Sent", "AppUserId", "EmailTemplate", "SendDate");

                    b.ToTable("EmailHistory");
                });

            modelBuilder.Entity("API.Entities.EpubFont", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("FileName")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("Name")
                        .HasColumnType("TEXT");

                    b.Property<string>("NormalizedName")
                        .HasColumnType("TEXT");

                    b.Property<int>("Provider")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.ToTable("EpubFont");
                });

            modelBuilder.Entity("API.Entities.FolderPath", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("LastScanned")
                        .HasColumnType("TEXT");

                    b.Property<int>("LibraryId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Path")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("LibraryId");

                    b.ToTable("FolderPath");
                });

            modelBuilder.Entity("API.Entities.Genre", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<string>("NormalizedTitle")
                        .HasColumnType("TEXT");

                    b.Property<string>("Title")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("NormalizedTitle")
                        .IsUnique();

                    b.ToTable("Genre");
                });

            modelBuilder.Entity("API.Entities.History.ManualMigrationHistory", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<string>("Name")
                        .HasColumnType("TEXT");

                    b.Property<string>("ProductVersion")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("RanAt")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.ToTable("ManualMigrationHistory");
                });

            modelBuilder.Entity("API.Entities.Library", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<bool>("AllowMetadataMatching")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(true);

                    b.Property<bool>("AllowScrobbling")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(true);

                    b.Property<string>("CoverImage")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("DefaultLanguage")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("");

                    b.Property<bool>("EnableMetadata")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(true);

                    b.Property<bool>("FolderWatching")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("IncludeInDashboard")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("IncludeInRecommended")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("IncludeInSearch")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("InheritWebLinksFromFirstChapter")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastScanned")
                        .HasColumnType("TEXT");

                    b.Property<bool>("ManageCollections")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("ManageReadingLists")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Name")
                        .HasColumnType("TEXT");

                    b.Property<string>("PrimaryColor")
                        .HasColumnType("TEXT");

                    b.Property<bool>("RemovePrefixForSortName")
                        .HasColumnType("INTEGER");

                    b.Property<string>("SecondaryColor")
                        .HasColumnType("TEXT");

                    b.Property<int>("Type")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.ToTable("Library");
                });

            modelBuilder.Entity("API.Entities.LibraryExcludePattern", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("LibraryId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Pattern")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("LibraryId");

                    b.ToTable("LibraryExcludePattern");
                });

            modelBuilder.Entity("API.Entities.LibraryFileTypeGroup", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("FileTypeGroup")
                        .HasColumnType("INTEGER");

                    b.Property<int>("LibraryId")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("LibraryId");

                    b.ToTable("LibraryFileTypeGroup");
                });

            modelBuilder.Entity("API.Entities.MangaFile", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<long>("Bytes")
                        .HasColumnType("INTEGER");

                    b.Property<int>("ChapterId")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("Extension")
                        .HasColumnType("TEXT");

                    b.Property<string>("FileName")
                        .HasColumnType("TEXT");

                    b.Property<string>("FilePath")
                        .HasColumnType("TEXT");

                    b.Property<int>("Format")
                        .HasColumnType("INTEGER");

                    b.Property<string>("KoreaderHash")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastFileAnalysis")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastFileAnalysisUtc")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<int>("Pages")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("ChapterId");

                    b.HasIndex("FilePath")
                        .HasDatabaseName("IX_MangaFile_FilePath");

                    b.ToTable("MangaFile");
                });

            modelBuilder.Entity("API.Entities.MediaError", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<string>("Comment")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("Details")
                        .HasColumnType("TEXT");

                    b.Property<string>("Extension")
                        .HasColumnType("TEXT");

                    b.Property<string>("FilePath")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.ToTable("MediaError");
                });

            modelBuilder.Entity("API.Entities.Metadata.ExternalRating", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("Authority")
                        .HasColumnType("INTEGER");

                    b.Property<int>("AverageScore")
                        .HasColumnType("INTEGER");

                    b.Property<int?>("ChapterId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("FavoriteCount")
                        .HasColumnType("INTEGER");

                    b.Property<int>("Provider")
                        .HasColumnType("INTEGER");

                    b.Property<string>("ProviderUrl")
                        .HasColumnType("TEXT");

                    b.Property<int>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("ChapterId");

                    b.ToTable("ExternalRating");
                });

            modelBuilder.Entity("API.Entities.Metadata.ExternalRecommendation", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int?>("AniListId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("CoverUrl")
                        .HasColumnType("TEXT");

                    b.Property<long?>("MalId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Name")
                        .HasColumnType("TEXT");

                    b.Property<int>("Provider")
                        .HasColumnType("INTEGER");

                    b.Property<int?>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Summary")
                        .HasColumnType("TEXT");

                    b.Property<string>("Url")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("SeriesId");

                    b.ToTable("ExternalRecommendation");
                });

            modelBuilder.Entity("API.Entities.Metadata.ExternalReview", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("Authority")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Body")
                        .HasColumnType("TEXT");

                    b.Property<string>("BodyJustText")
                        .HasColumnType("TEXT");

                    b.Property<int?>("ChapterId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("Provider")
                        .HasColumnType("INTEGER");

                    b.Property<int>("Rating")
                        .HasColumnType("INTEGER");

                    b.Property<string>("RawBody")
                        .HasColumnType("TEXT");

                    b.Property<int>("Score")
                        .HasColumnType("INTEGER");

                    b.Property<int>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("SiteUrl")
                        .HasColumnType("TEXT");

                    b.Property<string>("Tagline")
                        .HasColumnType("TEXT");

                    b.Property<int>("TotalVotes")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Username")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("ChapterId");

                    b.ToTable("ExternalReview");
                });

            modelBuilder.Entity("API.Entities.Metadata.ExternalSeriesMetadata", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AniListId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("AverageExternalRating")
                        .HasColumnType("INTEGER");

                    b.Property<int>("CbrId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("GoogleBooksId")
                        .HasColumnType("TEXT");

                    b.Property<long>("MalId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("ValidUntilUtc")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("SeriesId")
                        .IsUnique();

                    b.ToTable("ExternalSeriesMetadata");
                });

            modelBuilder.Entity("API.Entities.Metadata.GenreSeriesMetadata", b =>
                {
                    b.Property<int>("GenresId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("SeriesMetadatasId")
                        .HasColumnType("INTEGER");

                    b.HasKey("GenresId", "SeriesMetadatasId");

                    b.HasIndex("SeriesMetadatasId");

                    b.ToTable("GenreSeriesMetadata");
                });

            modelBuilder.Entity("API.Entities.Metadata.SeriesBlacklist", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("LastChecked")
                        .HasColumnType("TEXT");

                    b.Property<int>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("SeriesId");

                    b.ToTable("SeriesBlacklist");
                });

            modelBuilder.Entity("API.Entities.Metadata.SeriesMetadata", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AgeRating")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("AgeRatingLocked")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("CharacterLocked")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("ColoristLocked")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("CoverArtistLocked")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("EditorLocked")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("GenresLocked")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("ImprintLocked")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("InkerLocked")
                        .HasColumnType("INTEGER");

                    b.Property<string>("KPlusOverrides")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("[]");

                    b.Property<string>("Language")
                        .HasColumnType("TEXT");

                    b.Property<bool>("LanguageLocked")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("LettererLocked")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("LocationLocked")
                        .HasColumnType("INTEGER");

                    b.Property<int>("MaxCount")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("PencillerLocked")
                        .HasColumnType("INTEGER");

                    b.Property<int>("PublicationStatus")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("PublicationStatusLocked")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("PublisherLocked")
                        .HasColumnType("INTEGER");

                    b.Property<int>("ReleaseYear")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("ReleaseYearLocked")
                        .HasColumnType("INTEGER");

                    b.Property<uint>("RowVersion")
                        .IsConcurrencyToken()
                        .HasColumnType("INTEGER");

                    b.Property<int>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Summary")
                        .HasColumnType("TEXT");

                    b.Property<bool>("SummaryLocked")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("TagsLocked")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("TeamLocked")
                        .HasColumnType("INTEGER");

                    b.Property<int>("TotalCount")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("TranslatorLocked")
                        .HasColumnType("INTEGER");

                    b.Property<string>("WebLinks")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("");

                    b.Property<bool>("WriterLocked")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("AgeRating")
                        .HasDatabaseName("IX_SeriesMetadata_AgeRating");

                    b.HasIndex("SeriesId")
                        .IsUnique();

                    b.HasIndex("Id", "SeriesId")
                        .IsUnique();

                    b.HasIndex("SeriesId", "AgeRating")
                        .HasDatabaseName("IX_SeriesMetadata_SeriesId_AgeRating");

                    b.ToTable("SeriesMetadata");
                });

            modelBuilder.Entity("API.Entities.Metadata.SeriesMetadataTag", b =>
                {
                    b.Property<int>("SeriesMetadatasId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("TagsId")
                        .HasColumnType("INTEGER");

                    b.HasKey("SeriesMetadatasId", "TagsId");

                    b.HasIndex("TagsId");

                    b.ToTable("SeriesMetadataTag");
                });

            modelBuilder.Entity("API.Entities.Metadata.SeriesRelation", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("RelationKind")
                        .HasColumnType("INTEGER");

                    b.Property<int>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("TargetSeriesId")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("SeriesId");

                    b.HasIndex("TargetSeriesId");

                    b.ToTable("SeriesRelation");
                });

            modelBuilder.Entity("API.Entities.MetadataFieldMapping", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("DestinationType")
                        .HasColumnType("INTEGER");

                    b.Property<string>("DestinationValue")
                        .HasColumnType("TEXT");

                    b.Property<bool>("ExcludeFromSource")
                        .HasColumnType("INTEGER");

                    b.Property<int>("MetadataSettingsId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("SourceType")
                        .HasColumnType("INTEGER");

                    b.Property<string>("SourceValue")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("MetadataSettingsId");

                    b.ToTable("MetadataFieldMapping");
                });

            modelBuilder.Entity("API.Entities.MetadataMatching.MetadataSettings", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<string>("AgeRatingMappings")
                        .HasColumnType("TEXT");

                    b.Property<string>("Blacklist")
                        .HasColumnType("TEXT");

                    b.Property<bool>("EnableChapterCoverImage")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("EnableChapterPublisher")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("EnableChapterReleaseDate")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("EnableChapterSummary")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("EnableChapterTitle")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("EnableCoverImage")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(true);

                    b.Property<bool>("EnableExtendedMetadataProcessing")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("EnableGenres")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("EnableLocalizedName")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("EnablePeople")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("EnablePublicationStatus")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("EnableRelationships")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("EnableStartDate")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("EnableSummary")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("EnableTags")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("Enabled")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(true);

                    b.Property<bool>("FirstLastPeopleNaming")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Overrides")
                        .HasColumnType("TEXT");

                    b.PrimitiveCollection<string>("PersonRoles")
                        .HasColumnType("TEXT");

                    b.Property<string>("Whitelist")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.ToTable("MetadataSettings");
                });

            modelBuilder.Entity("API.Entities.Person.ChapterPeople", b =>
                {
                    b.Property<int>("ChapterId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("PersonId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("Role")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("KavitaPlusConnection")
                        .HasColumnType("INTEGER");

                    b.Property<int>("OrderWeight")
                        .HasColumnType("INTEGER");

                    b.HasKey("ChapterId", "PersonId", "Role");

                    b.HasIndex("PersonId");

                    b.ToTable("ChapterPeople");
                });

            modelBuilder.Entity("API.Entities.Person.Person", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AniListId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Asin")
                        .HasColumnType("TEXT");

                    b.Property<string>("CoverImage")
                        .HasColumnType("TEXT");

                    b.Property<bool>("CoverImageLocked")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Description")
                        .HasColumnType("TEXT");

                    b.Property<string>("HardcoverId")
                        .HasColumnType("TEXT");

                    b.Property<long>("MalId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Name")
                        .HasColumnType("TEXT");

                    b.Property<string>("NormalizedName")
                        .HasColumnType("TEXT");

                    b.Property<string>("PrimaryColor")
                        .HasColumnType("TEXT");

                    b.Property<string>("SecondaryColor")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.ToTable("Person");
                });

            modelBuilder.Entity("API.Entities.Person.PersonAlias", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<string>("Alias")
                        .HasColumnType("TEXT");

                    b.Property<string>("NormalizedAlias")
                        .HasColumnType("TEXT");

                    b.Property<int>("PersonId")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("PersonId");

                    b.ToTable("PersonAlias");
                });

            modelBuilder.Entity("API.Entities.Person.SeriesMetadataPeople", b =>
                {
                    b.Property<int>("SeriesMetadataId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("PersonId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("Role")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("KavitaPlusConnection")
                        .HasColumnType("INTEGER");

                    b.Property<int>("OrderWeight")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(0);

                    b.HasKey("SeriesMetadataId", "PersonId", "Role");

                    b.HasIndex("PersonId");

                    b.ToTable("SeriesMetadataPeople");
                });

            modelBuilder.Entity("API.Entities.Progress.AppUserProgress", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("BookScrollId")
                        .HasColumnType("TEXT");

                    b.Property<int>("ChapterId")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<int>("LibraryId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("PagesRead")
                        .HasColumnType("INTEGER");

                    b.Property<int>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("TotalReads")
                        .HasColumnType("INTEGER");

                    b.Property<int>("VolumeId")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.HasIndex("ChapterId");

                    b.HasIndex("SeriesId");

                    b.ToTable("AppUserProgresses");
                });

            modelBuilder.Entity("API.Entities.Progress.AppUserReadingHistory", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("ClientInfoUsed")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("[]");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("Data")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("{\"TotalMinutesRead\":0,\"TotalPagesRead\":0,\"TotalWordsRead\":0,\"LongestSessionMinutes\":0,\"SeriesIds\":null,\"ChapterIds\":null}");

                    b.Property<DateTime>("DateUtc")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.HasIndex("DateUtc")
                        .IsUnique();

                    b.ToTable("AppUserReadingHistory");
                });

            modelBuilder.Entity("API.Entities.Progress.AppUserReadingSession", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<DateTime?>("EndTime")
                        .HasColumnType("TEXT");

                    b.Property<DateTime?>("EndTimeUtc")
                        .HasColumnType("TEXT");

                    b.Property<bool>("IsActive")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(true);

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("StartTime")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("StartTimeUtc")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.HasIndex("IsActive");

                    b.ToTable("AppUserReadingSession");
                });

            modelBuilder.Entity("API.Entities.Progress.AppUserReadingSessionActivityData", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserReadingSessionId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("ChapterId")
                        .HasColumnType("INTEGER");

                    b.PrimitiveCollection<string>("DeviceIds")
                        .IsRequired()
                        .HasColumnType("TEXT");

                    b.Property<string>("EndBookScrollId")
                        .HasColumnType("TEXT");

                    b.Property<int>("EndPage")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime?>("EndTime")
                        .HasColumnType("TEXT");

                    b.Property<DateTime?>("EndTimeUtc")
                        .HasColumnType("TEXT");

                    b.Property<int>("Format")
                        .HasColumnType("INTEGER");

                    b.Property<int>("LibraryId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("PagesRead")
                        .HasColumnType("INTEGER");

                    b.Property<int>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("StartBookScrollId")
                        .HasColumnType("TEXT");

                    b.Property<int>("StartPage")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("StartTime")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("StartTimeUtc")
                        .HasColumnType("TEXT");

                    b.Property<int>("TotalPages")
                        .HasColumnType("INTEGER");

                    b.Property<long>("TotalWords")
                        .HasColumnType("INTEGER");

                    b.Property<int>("VolumeId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("WordsRead")
                        .HasColumnType("INTEGER");

                    b.ComplexProperty(typeof(Dictionary<string, object>), "ClientInfo", "API.Entities.Progress.AppUserReadingSessionActivityData.ClientInfo#ClientInfoData", b1 =>
                        {
                            b1.Property<string>("AppVersion");

                            b1.Property<int>("AuthType");

                            b1.Property<string>("Browser");

                            b1.Property<string>("BrowserVersion");

                            b1.Property<DateTime>("CapturedAt");

                            b1.Property<int>("ClientType");

                            b1.Property<string>("DeviceType");

                            b1.Property<string>("IpAddress")
                                .IsRequired();

                            b1.Property<string>("Orientation");

                            b1.Property<int>("Platform");

                            b1.Property<int?>("ScreenHeight");

                            b1.Property<int?>("ScreenWidth");

                            b1.Property<string>("UserAgent")
                                .IsRequired();

                            b1.ToJson("ClientInfo");
                        });

                    b.HasKey("Id");

                    b.HasIndex("AppUserReadingSessionId");

                    b.HasIndex("ChapterId");

                    b.HasIndex("LibraryId");

                    b.HasIndex("SeriesId");

                    b.HasIndex("VolumeId");

                    b.HasIndex("StartTimeUtc", "LibraryId")
                        .HasDatabaseName("IX_ActivityData_StartTimeUtc_LibraryId");

                    b.ToTable("AppUserReadingSessionActivityData");
                });

            modelBuilder.Entity("API.Entities.ReadingList", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AgeRating")
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("CoverImage")
                        .HasColumnType("TEXT");

                    b.Property<bool>("CoverImageLocked")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<int>("EndingMonth")
                        .HasColumnType("INTEGER");

                    b.Property<int>("EndingYear")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("NormalizedTitle")
                        .IsRequired()
                        .HasColumnType("TEXT");

                    b.Property<string>("PrimaryColor")
                        .HasColumnType("TEXT");

                    b.Property<bool>("Promoted")
                        .HasColumnType("INTEGER");

                    b.Property<string>("SecondaryColor")
                        .HasColumnType("TEXT");

                    b.Property<int>("StartingMonth")
                        .HasColumnType("INTEGER");

                    b.Property<int>("StartingYear")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Summary")
                        .HasColumnType("TEXT");

                    b.Property<string>("Title")
                        .IsRequired()
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.ToTable("ReadingList");
                });

            modelBuilder.Entity("API.Entities.ReadingListItem", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("ChapterId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("Order")
                        .HasColumnType("INTEGER");

                    b.Property<int>("ReadingListId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("VolumeId")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("ChapterId");

                    b.HasIndex("ReadingListId");

                    b.HasIndex("SeriesId");

                    b.HasIndex("VolumeId");

                    b.ToTable("ReadingListItem");
                });

            modelBuilder.Entity("API.Entities.Scrobble.ScrobbleError", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<string>("Comment")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("Details")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<int>("LibraryId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("ScrobbleEventId")
                        .HasColumnType("INTEGER");

                    b.Property<long?>("ScrobbleEventId1")
                        .HasColumnType("INTEGER");

                    b.Property<int>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("ScrobbleEventId1");

                    b.HasIndex("SeriesId");

                    b.ToTable("ScrobbleError");
                });

            modelBuilder.Entity("API.Entities.Scrobble.ScrobbleEvent", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int?>("AniListId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<int?>("ChapterNumber")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("ErrorDetails")
                        .HasColumnType("TEXT");

                    b.Property<int>("Format")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("IsErrored")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("IsProcessed")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<int>("LibraryId")
                        .HasColumnType("INTEGER");

                    b.Property<long?>("MalId")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime?>("ProcessDateUtc")
                        .HasColumnType("TEXT");

                    b.Property<float?>("Rating")
                        .HasColumnType("REAL");

                    b.Property<string>("ReviewBody")
                        .HasColumnType("TEXT");

                    b.Property<string>("ReviewTitle")
                        .HasColumnType("TEXT");

                    b.Property<int>("ScrobbleEventType")
                        .HasColumnType("INTEGER");

                    b.Property<int>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.Property<float?>("VolumeNumber")
                        .HasColumnType("REAL");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.HasIndex("LibraryId");

                    b.HasIndex("SeriesId");

                    b.ToTable("ScrobbleEvent");
                });

            modelBuilder.Entity("API.Entities.Scrobble.ScrobbleHold", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<int>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.HasIndex("SeriesId");

                    b.ToTable("ScrobbleHold");
                });

            modelBuilder.Entity("API.Entities.Series", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<float>("AvgHoursToRead")
                        .HasColumnType("REAL");

                    b.Property<string>("CoverImage")
                        .HasColumnType("TEXT");

                    b.Property<bool>("CoverImageLocked")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<bool>("DontMatch")
                        .HasColumnType("INTEGER");

                    b.Property<string>("FolderPath")
                        .HasColumnType("TEXT");

                    b.Property<int>("Format")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("IsBlacklisted")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("LastChapterAdded")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastChapterAddedUtc")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastFolderScanned")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastFolderScannedUtc")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<int>("LibraryId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("LocalizedName")
                        .HasColumnType("TEXT");

                    b.Property<bool>("LocalizedNameLocked")
                        .HasColumnType("INTEGER");

                    b.Property<string>("LowestFolderPath")
                        .HasColumnType("TEXT");

                    b.Property<int>("MaxHoursToRead")
                        .HasColumnType("INTEGER");

                    b.Property<int>("MinHoursToRead")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Name")
                        .HasColumnType("TEXT");

                    b.Property<string>("NormalizedLocalizedName")
                        .HasColumnType("TEXT");

                    b.Property<string>("NormalizedName")
                        .HasColumnType("TEXT");

                    b.Property<string>("OriginalName")
                        .HasColumnType("TEXT");

                    b.Property<int>("Pages")
                        .HasColumnType("INTEGER");

                    b.Property<string>("PrimaryColor")
                        .HasColumnType("TEXT");

                    b.Property<string>("SecondaryColor")
                        .HasColumnType("TEXT");

                    b.Property<string>("SortName")
                        .HasColumnType("TEXT");

                    b.Property<bool>("SortNameLocked")
                        .HasColumnType("INTEGER");

                    b.Property<long>("WordCount")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("LibraryId")
                        .HasDatabaseName("IX_Series_LibraryId");

                    b.HasIndex("NormalizedName")
                        .HasDatabaseName("IX_Series_NormalizedName");

                    b.ToTable("Series");
                });

            modelBuilder.Entity("API.Entities.ServerSetting", b =>
                {
                    b.Property<int>("Key")
                        .HasColumnType("INTEGER");

                    b.Property<uint>("RowVersion")
                        .IsConcurrencyToken()
                        .HasColumnType("INTEGER");

                    b.Property<string>("Value")
                        .HasColumnType("TEXT");

                    b.HasKey("Key");

                    b.ToTable("ServerSetting");
                });

            modelBuilder.Entity("API.Entities.ServerStatistics", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<long>("ChapterCount")
                        .HasColumnType("INTEGER");

                    b.Property<long>("FileCount")
                        .HasColumnType("INTEGER");

                    b.Property<long>("GenreCount")
                        .HasColumnType("INTEGER");

                    b.Property<long>("PersonCount")
                        .HasColumnType("INTEGER");

                    b.Property<long>("SeriesCount")
                        .HasColumnType("INTEGER");

                    b.Property<long>("TagCount")
                        .HasColumnType("INTEGER");

                    b.Property<long>("UserCount")
                        .HasColumnType("INTEGER");

                    b.Property<long>("VolumeCount")
                        .HasColumnType("INTEGER");

                    b.Property<int>("Year")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.ToTable("ServerStatistics");
                });

            modelBuilder.Entity("API.Entities.SiteTheme", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<string>("Author")
                        .HasColumnType("TEXT");

                    b.Property<string>("CompatibleVersion")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("Description")
                        .HasColumnType("TEXT");

                    b.Property<string>("FileName")
                        .HasColumnType("TEXT");

                    b.Property<string>("GitHubPath")
                        .HasColumnType("TEXT");

                    b.Property<bool>("IsDefault")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("Name")
                        .HasColumnType("TEXT");

                    b.Property<string>("NormalizedName")
                        .HasColumnType("TEXT");

                    b.Property<string>("PreviewUrls")
                        .HasColumnType("TEXT");

                    b.Property<int>("Provider")
                        .HasColumnType("INTEGER");

                    b.Property<string>("ShaHash")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.ToTable("SiteTheme");
                });

            modelBuilder.Entity("API.Entities.Tag", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<string>("NormalizedTitle")
                        .HasColumnType("TEXT");

                    b.Property<string>("Title")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("NormalizedTitle")
                        .IsUnique();

                    b.ToTable("Tag");
                });

            modelBuilder.Entity("API.Entities.User.AppUserAuthKey", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("CreatedAtUtc")
                        .HasColumnType("TEXT");

                    b.Property<DateTime?>("ExpiresAtUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("Key")
                        .HasColumnType("TEXT");

                    b.Property<DateTime?>("LastAccessedAt")
                        .HasColumnType("TEXT");

                    b.Property<string>("Name")
                        .HasColumnType("TEXT");

                    b.Property<int>("Provider")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(0);

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.HasIndex("ExpiresAtUtc");

                    b.HasIndex("Key")
                        .IsUnique();

                    b.ToTable("AppUserAuthKey");
                });

            modelBuilder.Entity("API.Entities.User.AppUserChapterRating", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("ChapterId")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<bool>("HasBeenRated")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<float>("Rating")
                        .HasColumnType("REAL");

                    b.Property<string>("Review")
                        .HasColumnType("TEXT");

                    b.Property<int>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.HasIndex("ChapterId");

                    b.HasIndex("SeriesId");

                    b.ToTable("AppUserChapterRating");
                });

            modelBuilder.Entity("API.Entities.User.AppUserPreferences", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<bool>("AllowAutomaticWebtoonReaderDetection")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(true);

                    b.Property<bool>("AniListScrobblingEnabled")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(true);

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("AutoCloseMenu")
                        .HasColumnType("INTEGER");

                    b.Property<string>("BackgroundColor")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("#000000");

                    b.Property<bool>("BlurUnreadSummaries")
                        .HasColumnType("INTEGER");

                    b.Property<string>("BookReaderFontFamily")
                        .HasColumnType("TEXT");

                    b.Property<int>("BookReaderFontSize")
                        .HasColumnType("INTEGER");

                    b.Property<string>("BookReaderHighlightSlots")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("[]");

                    b.Property<bool>("BookReaderImmersiveMode")
                        .HasColumnType("INTEGER");

                    b.Property<int>("BookReaderLayoutMode")
                        .HasColumnType("INTEGER");

                    b.Property<int>("BookReaderLineSpacing")
                        .HasColumnType("INTEGER");

                    b.Property<int>("BookReaderMargin")
                        .HasColumnType("INTEGER");

                    b.Property<int>("BookReaderReadingDirection")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("BookReaderTapToPaginate")
                        .HasColumnType("INTEGER");

                    b.Property<int>("BookReaderWritingStyle")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(0);

                    b.Property<string>("BookThemeName")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("Dark");

                    b.Property<bool>("CollapseSeriesRelationships")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("ColorScapeEnabled")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(true);

                    b.Property<string>("CustomKeyBinds")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("{}");

                    b.Property<bool>("DataSaver")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("EmulateBook")
                        .HasColumnType("INTEGER");

                    b.Property<int>("GlobalPageLayoutMode")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(0);

                    b.Property<int>("LayoutMode")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Locale")
                        .IsRequired()
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("en");

                    b.Property<bool>("NoTransitions")
                        .HasColumnType("INTEGER");

                    b.Property<string>("OpdsPreferences")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("{\"EmbedProgressIndicator\":true,\"IncludeContinueFrom\":true}");

                    b.Property<int>("PageSplitOption")
                        .HasColumnType("INTEGER");

                    b.Property<int>("PdfScrollMode")
                        .HasColumnType("INTEGER");

                    b.Property<int>("PdfSpreadMode")
                        .HasColumnType("INTEGER");

                    b.Property<int>("PdfTheme")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("PromptForDownloadSize")
                        .HasColumnType("INTEGER");

                    b.Property<int>("PromptForRereadsAfter")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(30);

                    b.Property<int>("ReaderMode")
                        .HasColumnType("INTEGER");

                    b.Property<int>("ReadingDirection")
                        .HasColumnType("INTEGER");

                    b.Property<int>("ScalingOption")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("ShareReviews")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("ShowScreenHints")
                        .HasColumnType("INTEGER");

                    b.Property<string>("SocialPreferences")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("{\"ShareReviews\":false,\"ShareAnnotations\":false,\"ViewOtherAnnotations\":false,\"SocialLibraries\":[],\"SocialMaxAgeRating\":-1,\"SocialIncludeUnknowns\":true,\"ShareProfile\":false}");

                    b.Property<bool>("SwipeToPaginate")
                        .HasColumnType("INTEGER");

                    b.Property<int?>("ThemeId")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("WantToReadSync")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(true);

                    b.HasKey("Id");

                    b.HasIndex("AppUserId")
                        .IsUnique();

                    b.HasIndex("ThemeId");

                    b.ToTable("AppUserPreferences");
                });

            modelBuilder.Entity("API.Entities.User.ClientDevice", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("AppUserId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("CurrentClientInfo")
                        .IsRequired()
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("{\"UserAgent\":\"\",\"IpAddress\":\"\",\"AuthType\":0,\"ClientType\":0,\"AppVersion\":null,\"Browser\":null,\"BrowserVersion\":null,\"Platform\":0,\"DeviceType\":null,\"ScreenWidth\":null,\"ScreenHeight\":null,\"Orientation\":null,\"CapturedAt\":\"0001-01-01T00:00:00\"}");

                    b.Property<string>("DeviceFingerprint")
                        .IsRequired()
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("FirstSeenUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("FriendlyName")
                        .IsRequired()
                        .HasColumnType("TEXT");

                    b.Property<bool>("IsActive")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("LastSeenUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("UiFingerprint")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("AppUserId");

                    b.ToTable("ClientDevice");
                });

            modelBuilder.Entity("API.Entities.Volume", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<float>("AvgHoursToRead")
                        .HasColumnType("REAL");

                    b.Property<string>("CoverImage")
                        .HasColumnType("TEXT");

                    b.Property<bool>("CoverImageLocked")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("CreatedUtc")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModified")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastModifiedUtc")
                        .HasColumnType("TEXT");

                    b.Property<string>("LookupName")
                        .HasColumnType("TEXT");

                    b.Property<int>("MaxHoursToRead")
                        .HasColumnType("INTEGER");

                    b.Property<float>("MaxNumber")
                        .HasColumnType("REAL");

                    b.Property<int>("MinHoursToRead")
                        .HasColumnType("INTEGER");

                    b.Property<float>("MinNumber")
                        .HasColumnType("REAL");

                    b.Property<string>("Name")
                        .HasColumnType("TEXT");

                    b.Property<int>("Number")
                        .HasColumnType("INTEGER");

                    b.Property<int>("Pages")
                        .HasColumnType("INTEGER");

                    b.Property<string>("PrimaryColor")
                        .HasColumnType("TEXT");

                    b.Property<string>("SecondaryColor")
                        .HasColumnType("TEXT");

                    b.Property<int>("SeriesId")
                        .HasColumnType("INTEGER");

                    b.Property<long>("WordCount")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("SeriesId");

                    b.ToTable("Volume");
                });

            modelBuilder.Entity("AppUserCollectionSeries", b =>
                {
                    b.Property<int>("CollectionsId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("ItemsId")
                        .HasColumnType("INTEGER");

                    b.HasKey("CollectionsId", "ItemsId");

                    b.HasIndex("ItemsId");

                    b.ToTable("AppUserCollectionSeries");
                });

            modelBuilder.Entity("AppUserLibrary", b =>
                {
                    b.Property<int>("AppUsersId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("LibrariesId")
                        .HasColumnType("INTEGER");

                    b.HasKey("AppUsersId", "LibrariesId");

                    b.HasIndex("LibrariesId");

                    b.ToTable("AppUserLibrary");
                });

            modelBuilder.Entity("ChapterGenre", b =>
                {
                    b.Property<int>("ChaptersId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("GenresId")
                        .HasColumnType("INTEGER");

                    b.HasKey("ChaptersId", "GenresId");

                    b.HasIndex("GenresId");

                    b.ToTable("ChapterGenre");
                });

            modelBuilder.Entity("ChapterTag", b =>
                {
                    b.Property<int>("ChaptersId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("TagsId")
                        .HasColumnType("INTEGER");

                    b.HasKey("ChaptersId", "TagsId");

                    b.HasIndex("TagsId");

                    b.ToTable("ChapterTag");
                });

            modelBuilder.Entity("CollectionTagSeriesMetadata", b =>
                {
                    b.Property<int>("CollectionTagsId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("SeriesMetadatasId")
                        .HasColumnType("INTEGER");

                    b.HasKey("CollectionTagsId", "SeriesMetadatasId");

                    b.HasIndex("SeriesMetadatasId");

                    b.ToTable("CollectionTagSeriesMetadata");
                });

            modelBuilder.Entity("ExternalRatingExternalSeriesMetadata", b =>
                {
                    b.Property<int>("ExternalRatingsId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("ExternalSeriesMetadatasId")
                        .HasColumnType("INTEGER");

                    b.HasKey("ExternalRatingsId", "ExternalSeriesMetadatasId");

                    b.HasIndex("ExternalSeriesMetadatasId");

                    b.ToTable("ExternalRatingExternalSeriesMetadata");
                });

            modelBuilder.Entity("ExternalRecommendationExternalSeriesMetadata", b =>
                {
                    b.Property<int>("ExternalRecommendationsId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("ExternalSeriesMetadatasId")
                        .HasColumnType("INTEGER");

                    b.HasKey("ExternalRecommendationsId", "ExternalSeriesMetadatasId");

                    b.HasIndex("ExternalSeriesMetadatasId");

                    b.ToTable("ExternalRecommendationExternalSeriesMetadata");
                });

            modelBuilder.Entity("ExternalReviewExternalSeriesMetadata", b =>
                {
                    b.Property<int>("ExternalReviewsId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("ExternalSeriesMetadatasId")
                        .HasColumnType("INTEGER");

                    b.HasKey("ExternalReviewsId", "ExternalSeriesMetadatasId");

                    b.HasIndex("ExternalSeriesMetadatasId");

                    b.ToTable("ExternalReviewExternalSeriesMetadata");
                });

            modelBuilder.Entity("Microsoft.AspNetCore.DataProtection.EntityFrameworkCore.DataProtectionKey", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<string>("FriendlyName")
                        .HasColumnType("TEXT");

                    b.Property<string>("Xml")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.ToTable("DataProtectionKeys");
                });

            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<int>", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<string>("ClaimType")
                        .HasColumnType("TEXT");

                    b.Property<string>("ClaimValue")
                        .HasColumnType("TEXT");

                    b.Property<int>("RoleId")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("RoleId");

                    b.ToTable("AspNetRoleClaims", (string)null);
                });

            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<int>", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<string>("ClaimType")
                        .HasColumnType("TEXT");

                    b.Property<string>("ClaimValue")
                        .HasColumnType("TEXT");

                    b.Property<int>("UserId")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.HasIndex("UserId");

                    b.ToTable("AspNetUserClaims", (string)null);
                });

            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<int>", b =>
                {
                    b.Property<string>("LoginProvider")
                        .HasColumnType("TEXT");

                    b.Property<string>("ProviderKey")
                        .HasColumnType("TEXT");

                    b.Property<string>("ProviderDisplayName")
                        .HasColumnType("TEXT");

                    b.Property<int>("UserId")
                        .HasColumnType("INTEGER");

                    b.HasKey("LoginProvider", "ProviderKey");

                    b.HasIndex("UserId");

                    b.ToTable("AspNetUserLogins", (string)null);
                });

            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<int>", b =>
                {
                    b.Property<int>("UserId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("LoginProvider")
                        .HasColumnType("TEXT");

                    b.Property<string>("Name")
                        .HasColumnType("TEXT");

                    b.Property<string>("Value")
                        .HasColumnType("TEXT");

                    b.HasKey("UserId", "LoginProvider", "Name");

                    b.ToTable("AspNetUserTokens", (string)null);
                });

            modelBuilder.Entity("API.Entities.AppUserAnnotation", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany("Annotations")
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Chapter", "Chapter")
                        .WithMany()
                        .HasForeignKey("ChapterId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Library", "Library")
                        .WithMany()
                        .HasForeignKey("LibraryId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Series", "Series")
                        .WithMany()
                        .HasForeignKey("SeriesId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");

                    b.Navigation("Chapter");

                    b.Navigation("Library");

                    b.Navigation("Series");
                });

            modelBuilder.Entity("API.Entities.AppUserBookmark", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany("Bookmarks")
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Chapter", "Chapter")
                        .WithMany()
                        .HasForeignKey("ChapterId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Series", "Series")
                        .WithMany()
                        .HasForeignKey("SeriesId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Volume", "Volume")
                        .WithMany()
                        .HasForeignKey("VolumeId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");

                    b.Navigation("Chapter");

                    b.Navigation("Series");

                    b.Navigation("Volume");
                });

            modelBuilder.Entity("API.Entities.AppUserCollection", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany("Collections")
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");
                });

            modelBuilder.Entity("API.Entities.AppUserDashboardStream", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany("DashboardStreams")
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.AppUserSmartFilter", "SmartFilter")
                        .WithMany()
                        .HasForeignKey("SmartFilterId");

                    b.Navigation("AppUser");

                    b.Navigation("SmartFilter");
                });

            modelBuilder.Entity("API.Entities.AppUserExternalSource", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany("ExternalSources")
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");
                });

            modelBuilder.Entity("API.Entities.AppUserOnDeckRemoval", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany()
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Series", "Series")
                        .WithMany()
                        .HasForeignKey("SeriesId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");

                    b.Navigation("Series");
                });

            modelBuilder.Entity("API.Entities.AppUserRating", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany("Ratings")
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Series", "Series")
                        .WithMany("Ratings")
                        .HasForeignKey("SeriesId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");

                    b.Navigation("Series");
                });

            modelBuilder.Entity("API.Entities.AppUserReadingProfile", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany("ReadingProfiles")
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");
                });

            modelBuilder.Entity("API.Entities.AppUserRole", b =>
                {
                    b.HasOne("API.Entities.AppRole", "Role")
                        .WithMany("UserRoles")
                        .HasForeignKey("RoleId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.AppUser", "User")
                        .WithMany("UserRoles")
                        .HasForeignKey("UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Role");

                    b.Navigation("User");
                });

            modelBuilder.Entity("API.Entities.AppUserSideNavStream", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany("SideNavStreams")
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.AppUserSmartFilter", "SmartFilter")
                        .WithMany()
                        .HasForeignKey("SmartFilterId");

                    b.Navigation("AppUser");

                    b.Navigation("SmartFilter");
                });

            modelBuilder.Entity("API.Entities.AppUserSmartFilter", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany("SmartFilters")
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");
                });

            modelBuilder.Entity("API.Entities.AppUserTableOfContent", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany("TableOfContents")
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Chapter", "Chapter")
                        .WithMany()
                        .HasForeignKey("ChapterId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Series", "Series")
                        .WithMany()
                        .HasForeignKey("SeriesId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");

                    b.Navigation("Chapter");

                    b.Navigation("Series");
                });

            modelBuilder.Entity("API.Entities.AppUserWantToRead", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany("WantToRead")
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Series", "Series")
                        .WithMany()
                        .HasForeignKey("SeriesId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");

                    b.Navigation("Series");
                });

            modelBuilder.Entity("API.Entities.Chapter", b =>
                {
                    b.HasOne("API.Entities.Volume", "Volume")
                        .WithMany("Chapters")
                        .HasForeignKey("VolumeId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Volume");
                });

            modelBuilder.Entity("API.Entities.ClientDeviceHistory", b =>
                {
                    b.HasOne("API.Entities.User.ClientDevice", "Device")
                        .WithMany("History")
                        .HasForeignKey("DeviceId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Device");
                });

            modelBuilder.Entity("API.Entities.Device", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany("Devices")
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");
                });

            modelBuilder.Entity("API.Entities.EmailHistory", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany()
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");
                });

            modelBuilder.Entity("API.Entities.FolderPath", b =>
                {
                    b.HasOne("API.Entities.Library", "Library")
                        .WithMany("Folders")
                        .HasForeignKey("LibraryId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Library");
                });

            modelBuilder.Entity("API.Entities.LibraryExcludePattern", b =>
                {
                    b.HasOne("API.Entities.Library", "Library")
                        .WithMany("LibraryExcludePatterns")
                        .HasForeignKey("LibraryId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Library");
                });

            modelBuilder.Entity("API.Entities.LibraryFileTypeGroup", b =>
                {
                    b.HasOne("API.Entities.Library", "Library")
                        .WithMany("LibraryFileTypes")
                        .HasForeignKey("LibraryId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Library");
                });

            modelBuilder.Entity("API.Entities.MangaFile", b =>
                {
                    b.HasOne("API.Entities.Chapter", "Chapter")
                        .WithMany("Files")
                        .HasForeignKey("ChapterId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Chapter");
                });

            modelBuilder.Entity("API.Entities.Metadata.ExternalRating", b =>
                {
                    b.HasOne("API.Entities.Chapter", null)
                        .WithMany("ExternalRatings")
                        .HasForeignKey("ChapterId");
                });

            modelBuilder.Entity("API.Entities.Metadata.ExternalReview", b =>
                {
                    b.HasOne("API.Entities.Chapter", null)
                        .WithMany("ExternalReviews")
                        .HasForeignKey("ChapterId");
                });

            modelBuilder.Entity("API.Entities.Metadata.ExternalSeriesMetadata", b =>
                {
                    b.HasOne("API.Entities.Series", "Series")
                        .WithOne("ExternalSeriesMetadata")
                        .HasForeignKey("API.Entities.Metadata.ExternalSeriesMetadata", "SeriesId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Series");
                });

            modelBuilder.Entity("API.Entities.Metadata.GenreSeriesMetadata", b =>
                {
                    b.HasOne("API.Entities.Genre", null)
                        .WithMany()
                        .HasForeignKey("GenresId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Metadata.SeriesMetadata", null)
                        .WithMany()
                        .HasForeignKey("SeriesMetadatasId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("API.Entities.Metadata.SeriesBlacklist", b =>
                {
                    b.HasOne("API.Entities.Series", "Series")
                        .WithMany()
                        .HasForeignKey("SeriesId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Series");
                });

            modelBuilder.Entity("API.Entities.Metadata.SeriesMetadata", b =>
                {
                    b.HasOne("API.Entities.Series", "Series")
                        .WithOne("Metadata")
                        .HasForeignKey("API.Entities.Metadata.SeriesMetadata", "SeriesId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Series");
                });

            modelBuilder.Entity("API.Entities.Metadata.SeriesMetadataTag", b =>
                {
                    b.HasOne("API.Entities.Metadata.SeriesMetadata", null)
                        .WithMany()
                        .HasForeignKey("SeriesMetadatasId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Tag", null)
                        .WithMany()
                        .HasForeignKey("TagsId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("API.Entities.Metadata.SeriesRelation", b =>
                {
                    b.HasOne("API.Entities.Series", "Series")
                        .WithMany("Relations")
                        .HasForeignKey("SeriesId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Series", "TargetSeries")
                        .WithMany("RelationOf")
                        .HasForeignKey("TargetSeriesId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Series");

                    b.Navigation("TargetSeries");
                });

            modelBuilder.Entity("API.Entities.MetadataFieldMapping", b =>
                {
                    b.HasOne("API.Entities.MetadataMatching.MetadataSettings", "MetadataSettings")
                        .WithMany("FieldMappings")
                        .HasForeignKey("MetadataSettingsId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("MetadataSettings");
                });

            modelBuilder.Entity("API.Entities.Person.ChapterPeople", b =>
                {
                    b.HasOne("API.Entities.Chapter", "Chapter")
                        .WithMany("People")
                        .HasForeignKey("ChapterId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Person.Person", "Person")
                        .WithMany("ChapterPeople")
                        .HasForeignKey("PersonId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Chapter");

                    b.Navigation("Person");
                });

            modelBuilder.Entity("API.Entities.Person.PersonAlias", b =>
                {
                    b.HasOne("API.Entities.Person.Person", "Person")
                        .WithMany("Aliases")
                        .HasForeignKey("PersonId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Person");
                });

            modelBuilder.Entity("API.Entities.Person.SeriesMetadataPeople", b =>
                {
                    b.HasOne("API.Entities.Person.Person", "Person")
                        .WithMany("SeriesMetadataPeople")
                        .HasForeignKey("PersonId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Metadata.SeriesMetadata", "SeriesMetadata")
                        .WithMany("People")
                        .HasForeignKey("SeriesMetadataId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Person");

                    b.Navigation("SeriesMetadata");
                });

            modelBuilder.Entity("API.Entities.Progress.AppUserProgress", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany("Progresses")
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Chapter", null)
                        .WithMany("UserProgress")
                        .HasForeignKey("ChapterId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Series", null)
                        .WithMany("Progress")
                        .HasForeignKey("SeriesId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");
                });

            modelBuilder.Entity("API.Entities.Progress.AppUserReadingHistory", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany("ReadingHistory")
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");
                });

            modelBuilder.Entity("API.Entities.Progress.AppUserReadingSession", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany("ReadingSessions")
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");
                });

            modelBuilder.Entity("API.Entities.Progress.AppUserReadingSessionActivityData", b =>
                {
                    b.HasOne("API.Entities.Progress.AppUserReadingSession", "ReadingSession")
                        .WithMany("ActivityData")
                        .HasForeignKey("AppUserReadingSessionId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Chapter", "Chapter")
                        .WithMany()
                        .HasForeignKey("ChapterId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Library", "Library")
                        .WithMany()
                        .HasForeignKey("LibraryId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Series", "Series")
                        .WithMany()
                        .HasForeignKey("SeriesId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Volume", "Volume")
                        .WithMany()
                        .HasForeignKey("VolumeId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Chapter");

                    b.Navigation("Library");

                    b.Navigation("ReadingSession");

                    b.Navigation("Series");

                    b.Navigation("Volume");
                });

            modelBuilder.Entity("API.Entities.ReadingList", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany("ReadingLists")
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");
                });

            modelBuilder.Entity("API.Entities.ReadingListItem", b =>
                {
                    b.HasOne("API.Entities.Chapter", "Chapter")
                        .WithMany()
                        .HasForeignKey("ChapterId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.ReadingList", "ReadingList")
                        .WithMany("Items")
                        .HasForeignKey("ReadingListId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Series", "Series")
                        .WithMany()
                        .HasForeignKey("SeriesId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Volume", "Volume")
                        .WithMany()
                        .HasForeignKey("VolumeId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Chapter");

                    b.Navigation("ReadingList");

                    b.Navigation("Series");

                    b.Navigation("Volume");
                });

            modelBuilder.Entity("API.Entities.Scrobble.ScrobbleError", b =>
                {
                    b.HasOne("API.Entities.Scrobble.ScrobbleEvent", "ScrobbleEvent")
                        .WithMany()
                        .HasForeignKey("ScrobbleEventId1");

                    b.HasOne("API.Entities.Series", "Series")
                        .WithMany()
                        .HasForeignKey("SeriesId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("ScrobbleEvent");

                    b.Navigation("Series");
                });

            modelBuilder.Entity("API.Entities.Scrobble.ScrobbleEvent", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany()
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Library", "Library")
                        .WithMany()
                        .HasForeignKey("LibraryId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Series", "Series")
                        .WithMany()
                        .HasForeignKey("SeriesId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");

                    b.Navigation("Library");

                    b.Navigation("Series");
                });

            modelBuilder.Entity("API.Entities.Scrobble.ScrobbleHold", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany("ScrobbleHolds")
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Series", "Series")
                        .WithMany()
                        .HasForeignKey("SeriesId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");

                    b.Navigation("Series");
                });

            modelBuilder.Entity("API.Entities.Series", b =>
                {
                    b.HasOne("API.Entities.Library", "Library")
                        .WithMany("Series")
                        .HasForeignKey("LibraryId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Library");
                });

            modelBuilder.Entity("API.Entities.User.AppUserAuthKey", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany("AuthKeys")
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");
                });

            modelBuilder.Entity("API.Entities.User.AppUserChapterRating", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany("ChapterRatings")
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Chapter", "Chapter")
                        .WithMany("Ratings")
                        .HasForeignKey("ChapterId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Series", "Series")
                        .WithMany()
                        .HasForeignKey("SeriesId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");

                    b.Navigation("Chapter");

                    b.Navigation("Series");
                });

            modelBuilder.Entity("API.Entities.User.AppUserPreferences", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithOne("UserPreferences")
                        .HasForeignKey("API.Entities.User.AppUserPreferences", "AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.SiteTheme", "Theme")
                        .WithMany()
                        .HasForeignKey("ThemeId");

                    b.Navigation("AppUser");

                    b.Navigation("Theme");
                });

            modelBuilder.Entity("API.Entities.User.ClientDevice", b =>
                {
                    b.HasOne("API.Entities.AppUser", "AppUser")
                        .WithMany("ClientDevices")
                        .HasForeignKey("AppUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AppUser");
                });

            modelBuilder.Entity("API.Entities.Volume", b =>
                {
                    b.HasOne("API.Entities.Series", "Series")
                        .WithMany("Volumes")
                        .HasForeignKey("SeriesId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Series");
                });

            modelBuilder.Entity("AppUserCollectionSeries", b =>
                {
                    b.HasOne("API.Entities.AppUserCollection", null)
                        .WithMany()
                        .HasForeignKey("CollectionsId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Series", null)
                        .WithMany()
                        .HasForeignKey("ItemsId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("AppUserLibrary", b =>
                {
                    b.HasOne("API.Entities.AppUser", null)
                        .WithMany()
                        .HasForeignKey("AppUsersId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Library", null)
                        .WithMany()
                        .HasForeignKey("LibrariesId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("ChapterGenre", b =>
                {
                    b.HasOne("API.Entities.Chapter", null)
                        .WithMany()
                        .HasForeignKey("ChaptersId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Genre", null)
                        .WithMany()
                        .HasForeignKey("GenresId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("ChapterTag", b =>
                {
                    b.HasOne("API.Entities.Chapter", null)
                        .WithMany()
                        .HasForeignKey("ChaptersId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Tag", null)
                        .WithMany()
                        .HasForeignKey("TagsId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("CollectionTagSeriesMetadata", b =>
                {
                    b.HasOne("API.Entities.CollectionTag", null)
                        .WithMany()
                        .HasForeignKey("CollectionTagsId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Metadata.SeriesMetadata", null)
                        .WithMany()
                        .HasForeignKey("SeriesMetadatasId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("ExternalRatingExternalSeriesMetadata", b =>
                {
                    b.HasOne("API.Entities.Metadata.ExternalRating", null)
                        .WithMany()
                        .HasForeignKey("ExternalRatingsId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Metadata.ExternalSeriesMetadata", null)
                        .WithMany()
                        .HasForeignKey("ExternalSeriesMetadatasId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("ExternalRecommendationExternalSeriesMetadata", b =>
                {
                    b.HasOne("API.Entities.Metadata.ExternalRecommendation", null)
                        .WithMany()
                        .HasForeignKey("ExternalRecommendationsId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Metadata.ExternalSeriesMetadata", null)
                        .WithMany()
                        .HasForeignKey("ExternalSeriesMetadatasId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("ExternalReviewExternalSeriesMetadata", b =>
                {
                    b.HasOne("API.Entities.Metadata.ExternalReview", null)
                        .WithMany()
                        .HasForeignKey("ExternalReviewsId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Entities.Metadata.ExternalSeriesMetadata", null)
                        .WithMany()
                        .HasForeignKey("ExternalSeriesMetadatasId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<int>", b =>
                {
                    b.HasOne("API.Entities.AppRole", null)
                        .WithMany()
                        .HasForeignKey("RoleId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<int>", b =>
                {
                    b.HasOne("API.Entities.AppUser", null)
                        .WithMany()
                        .HasForeignKey("UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<int>", b =>
                {
                    b.HasOne("API.Entities.AppUser", null)
                        .WithMany()
                        .HasForeignKey("UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<int>", b =>
                {
                    b.HasOne("API.Entities.AppUser", null)
                        .WithMany()
                        .HasForeignKey("UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("API.Entities.AppRole", b =>
                {
                    b.Navigation("UserRoles");
                });

            modelBuilder.Entity("API.Entities.AppUser", b =>
                {
                    b.Navigation("Annotations");

                    b.Navigation("AuthKeys");

                    b.Navigation("Bookmarks");

                    b.Navigation("ChapterRatings");

                    b.Navigation("ClientDevices");

                    b.Navigation("Collections");

                    b.Navigation("DashboardStreams");

                    b.Navigation("Devices");

                    b.Navigation("ExternalSources");

                    b.Navigation("Progresses");

                    b.Navigation("Ratings");

                    b.Navigation("ReadingHistory");

                    b.Navigation("ReadingLists");

                    b.Navigation("ReadingProfiles");

                    b.Navigation("ReadingSessions");

                    b.Navigation("ScrobbleHolds");

                    b.Navigation("SideNavStreams");

                    b.Navigation("SmartFilters");

                    b.Navigation("TableOfContents");

                    b.Navigation("UserPreferences")
                        .IsRequired();

                    b.Navigation("UserRoles");

                    b.Navigation("WantToRead");
                });

            modelBuilder.Entity("API.Entities.Chapter", b =>
                {
                    b.Navigation("ExternalRatings");

                    b.Navigation("ExternalReviews");

                    b.Navigation("Files");

                    b.Navigation("People");

                    b.Navigation("Ratings");

                    b.Navigation("UserProgress");
                });

            modelBuilder.Entity("API.Entities.Library", b =>
                {
                    b.Navigation("Folders");

                    b.Navigation("LibraryExcludePatterns");

                    b.Navigation("LibraryFileTypes");

                    b.Navigation("Series");
                });

            modelBuilder.Entity("API.Entities.Metadata.SeriesMetadata", b =>
                {
                    b.Navigation("People");
                });

            modelBuilder.Entity("API.Entities.MetadataMatching.MetadataSettings", b =>
                {
                    b.Navigation("FieldMappings");
                });

            modelBuilder.Entity("API.Entities.Person.Person", b =>
                {
                    b.Navigation("Aliases");

                    b.Navigation("ChapterPeople");

                    b.Navigation("SeriesMetadataPeople");
                });

            modelBuilder.Entity("API.Entities.Progress.AppUserReadingSession", b =>
                {
                    b.Navigation("ActivityData");
                });

            modelBuilder.Entity("API.Entities.ReadingList", b =>
                {
                    b.Navigation("Items");
                });

            modelBuilder.Entity("API.Entities.Series", b =>
                {
                    b.Navigation("ExternalSeriesMetadata");

                    b.Navigation("Metadata");

                    b.Navigation("Progress");

                    b.Navigation("Ratings");

                    b.Navigation("RelationOf");

                    b.Navigation("Relations");

                    b.Navigation("Volumes");
                });

            modelBuilder.Entity("API.Entities.User.ClientDevice", b =>
                {
                    b.Navigation("History");
                });

            modelBuilder.Entity("API.Entities.Volume", b =>
                {
                    b.Navigation("Chapters");
                });
#pragma warning restore 612, 618
        }
    }
}
