mirror of
				https://github.com/Kareadita/Kavita.git
				synced 2025-11-03 19:17:05 -05:00 
			
		
		
		
	* Staging the code for the new scan loop. * Implemented a basic idea of changes on drives triggering scan loop. Issues: 1. Scan by folder does not work, 2. Queuing system is very hacky and needs a separate thread, 3. Performance degregation could be very real. * Started writing unit test for new loop code * Implemented a basic method to scan a folder path with ignore support (not implemented, code in place) * Added some code to the parser to build out the idea of processing series in batches based on some top level folder. * Scan Series now uses the new code (folder based parsing) and now handles the LocalizedSeries issue. * Got library scan working with the new folder-based scan loop. Updated code to set FolderPath (for improved scan times and partial scan support). * Wrote some notes on update library scan loop. * Removed migration for merge * Reapplied the SeriesFolder migration after merge * Refactored a check that used multiple db calls into one. * Made lots of progress on ignore support, but some confusion on underlying library. Ticket created. On hold till then. * Updated Scan Library and Scan Series to exit early if no changes are on the underlying folders that need to be scanned. * Implemented the ability to have .kavitaignore files within your directories and Kavita will parse them and ignore files and directories based on rules within them. * Fixed an issue where ignore files nested wouldn't stack with higher level ignores * Wrote out some basic code that showcases how we can scan series or library based on file events on the underlying system. Very buggy, needs lots of edge case testing and logging and dupplication checking. * Things are working kinda. I'm getting lost in my own code and complexity. I'm not sure it's worth it. * Refactored ScanFiles out to Directory Service. * Refactored more code out to keep the code clean. * More unit tests * Refactored the signature of ParsedSeries to use IList. Started writing unit tests and reworked the UpdateLibrary to work how it used to with new scan loop code (note: using async update library/series does not work). * Fixed the bug where processSeriesInfos was being invoked twice per series and made the code work very similar to old code (except loose leaf files dont work) but with folder based scanning. * Prep for unit tests (updating broken ones with new implementations) * Just some notes. Not sure I want to finish this work. * Refactored the LibraryWatcher with some comments and state variables. * Undid the migrations in case I don't move forward with this branch * Started to clean the code and prepare for finishing this work. * Fixed a bad merge * Updated signatures to cleanup the code and commit to the new strategy for scanning. * Swapped out the code with async processing of series on a small library * The new scan loop is working in both Sync and Async methods. The code is slow and not optimized. This represents a good point to start polling and applying optimizations. * Refactored UpdateSeries out of Scanner and into a dedicated file. * Refactored how ProcessTasks are awaited to allow more async * Fixed an issue where side nav item wouldn't show correct highlight and migrated to OnPush * Moved where we start to stopwatch to encapsulate the full scan * Cleaned up SignalR events to report correctly (still needs a redesign) * Remove the "remove" code until I figure it out * Put in extremely expensive series deletion code for library scan. * Have Genre and Tag update the DB immediately to avoid dup issues * Taking a break * Moving to a lock with People was successful. Need to apply to others. * Refactored code for series level and tag and genre with new locking strategy. * New scan loop works. Next up optimization * Swapped out the Kavita log with svg for faster load * Refactored metadata updates to occur when the series are being updated. * Code cleanup * Added a new type of generic message (Info) to inform the user. * Code cleanup * Implemented an optimization which prevents any I/O (other than an attribute lookup) for Library/Series Scan. This can bring a recently updated library on network storage (650 series) to fully process in 2 seconds. Fixed a bug where File Analysis was running everytime for each non-epub file. * Fixed ARM x64 builds not being able to view PDF cover images due to a bad update in DocNet. * Some code cleanup * Added experimental signalr update code to have a more natural refresh of library-detail page * Hooked in ability to send new series events to UI * Moved all scan (file scan only) tasks into Scan Queue. Made it so scheduled ScanLibraries will now check if any existing task is being run and reschedule for 3 hours, and 10 mins for scan series. * Implemented the info event in the events widget and added a clear all button to dismiss all infos and errors. Added --event-widget-info-bg-color * Remove --drawer-background-color since it's not used * When new series added, inject directly into the view. * Some debug code cleanup * Fixed up the unit tests * Ensure all config directories exist on startup * Disabled Library Watching (that will go in next build) * Ensure update for series is admin only * Lots of code changes, scan series kinda works, specials are splitting, optimizations are failing. Demotivated on this work again. * Removed SeriesFolder migration * Added the SeriesFolder migration * Added a new pipe for dates so we can provide some nicer defaults. Added folder path to the series detail. * The scan optimizations now work for NTFS systems. * Removed a TODO * Migrated all the times to use DateTime.Now and not Utc. * Refactored some repo calls to use the includes flag pattern * Implemented a check for the library scan optimization check to validate if the library was updated (type change, library rename, folder change, or series deleted) and let the optimization be bypassed. * Added another optimization which will use just folder attribute of last write time if the drive is not NTFS. * Fixed a unit test * Some code cleanup
		
			
				
	
	
		
			1606 lines
		
	
	
		
			53 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			1606 lines
		
	
	
		
			53 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
// <auto-generated />
 | 
						|
using System;
 | 
						|
using API.Data;
 | 
						|
using Microsoft.EntityFrameworkCore;
 | 
						|
using Microsoft.EntityFrameworkCore.Infrastructure;
 | 
						|
using Microsoft.EntityFrameworkCore.Migrations;
 | 
						|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
 | 
						|
 | 
						|
#nullable disable
 | 
						|
 | 
						|
namespace API.Data.Migrations
 | 
						|
{
 | 
						|
    [DbContext(typeof(DataContext))]
 | 
						|
    [Migration("20220817173731_SeriesFolder")]
 | 
						|
    partial class SeriesFolder
 | 
						|
    {
 | 
						|
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
 | 
						|
        {
 | 
						|
#pragma warning disable 612, 618
 | 
						|
            modelBuilder.HasAnnotation("ProductVersion", "6.0.7");
 | 
						|
 | 
						|
            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<string>("ApiKey")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<string>("ConcurrencyStamp")
 | 
						|
                        .IsConcurrencyToken()
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<string>("ConfirmationToken")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<DateTime>("Created")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<string>("Email")
 | 
						|
                        .HasMaxLength(256)
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<bool>("EmailConfirmed")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<DateTime>("LastActive")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<bool>("LockoutEnabled")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<DateTimeOffset?>("LockoutEnd")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<string>("NormalizedEmail")
 | 
						|
                        .HasMaxLength(256)
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<string>("NormalizedUserName")
 | 
						|
                        .HasMaxLength(256)
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<string>("PasswordHash")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<string>("PhoneNumber")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<bool>("PhoneNumberConfirmed")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<uint>("RowVersion")
 | 
						|
                        .IsConcurrencyToken()
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    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.AppUserBookmark", 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<string>("FileName")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<DateTime>("LastModified")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<int>("Page")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("SeriesId")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("VolumeId")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.HasKey("Id");
 | 
						|
 | 
						|
                    b.HasIndex("AppUserId");
 | 
						|
 | 
						|
                    b.ToTable("AppUserBookmark");
 | 
						|
                });
 | 
						|
 | 
						|
            modelBuilder.Entity("API.Entities.AppUserPreferences", b =>
 | 
						|
                {
 | 
						|
                    b.Property<int>("Id")
 | 
						|
                        .ValueGeneratedOnAdd()
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    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<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<string>("BookThemeName")
 | 
						|
                        .ValueGeneratedOnAdd()
 | 
						|
                        .HasColumnType("TEXT")
 | 
						|
                        .HasDefaultValue("Dark");
 | 
						|
 | 
						|
                    b.Property<int>("GlobalPageLayoutMode")
 | 
						|
                        .ValueGeneratedOnAdd()
 | 
						|
                        .HasColumnType("INTEGER")
 | 
						|
                        .HasDefaultValue(0);
 | 
						|
 | 
						|
                    b.Property<int>("LayoutMode")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("PageSplitOption")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<bool>("PromptForDownloadSize")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("ReaderMode")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("ReadingDirection")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("ScalingOption")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<bool>("ShowScreenHints")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int?>("ThemeId")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.HasKey("Id");
 | 
						|
 | 
						|
                    b.HasIndex("AppUserId")
 | 
						|
                        .IsUnique();
 | 
						|
 | 
						|
                    b.HasIndex("ThemeId");
 | 
						|
 | 
						|
                    b.ToTable("AppUserPreferences");
 | 
						|
                });
 | 
						|
 | 
						|
            modelBuilder.Entity("API.Entities.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>("LastModified")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<int>("PagesRead")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("SeriesId")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("VolumeId")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.HasKey("Id");
 | 
						|
 | 
						|
                    b.HasIndex("AppUserId");
 | 
						|
 | 
						|
                    b.HasIndex("SeriesId");
 | 
						|
 | 
						|
                    b.ToTable("AppUserProgresses");
 | 
						|
                });
 | 
						|
 | 
						|
            modelBuilder.Entity("API.Entities.AppUserRating", b =>
 | 
						|
                {
 | 
						|
                    b.Property<int>("Id")
 | 
						|
                        .ValueGeneratedOnAdd()
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("AppUserId")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("Rating")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    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.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.Chapter", b =>
 | 
						|
                {
 | 
						|
                    b.Property<int>("Id")
 | 
						|
                        .ValueGeneratedOnAdd()
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("AgeRating")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("AvgHoursToRead")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("Count")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<string>("CoverImage")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<bool>("CoverImageLocked")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<DateTime>("Created")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<bool>("IsSpecial")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<string>("Language")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<DateTime>("LastModified")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<int>("MaxHoursToRead")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("MinHoursToRead")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<string>("Number")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<int>("Pages")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<string>("Range")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<DateTime>("ReleaseDate")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<string>("Summary")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<string>("Title")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<string>("TitleName")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<int>("TotalCount")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("VolumeId")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<long>("WordCount")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.HasKey("Id");
 | 
						|
 | 
						|
                    b.HasIndex("VolumeId");
 | 
						|
 | 
						|
                    b.ToTable("Chapter");
 | 
						|
                });
 | 
						|
 | 
						|
            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.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<bool>("ExternalTag")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<string>("NormalizedTitle")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<string>("Title")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.HasKey("Id");
 | 
						|
 | 
						|
                    b.HasIndex("NormalizedTitle", "ExternalTag")
 | 
						|
                        .IsUnique();
 | 
						|
 | 
						|
                    b.ToTable("Genre");
 | 
						|
                });
 | 
						|
 | 
						|
            modelBuilder.Entity("API.Entities.Library", b =>
 | 
						|
                {
 | 
						|
                    b.Property<int>("Id")
 | 
						|
                        .ValueGeneratedOnAdd()
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<string>("CoverImage")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<DateTime>("Created")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<DateTime>("LastModified")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<DateTime>("LastScanned")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<string>("Name")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<int>("Type")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.HasKey("Id");
 | 
						|
 | 
						|
                    b.ToTable("Library");
 | 
						|
                });
 | 
						|
 | 
						|
            modelBuilder.Entity("API.Entities.MangaFile", b =>
 | 
						|
                {
 | 
						|
                    b.Property<int>("Id")
 | 
						|
                        .ValueGeneratedOnAdd()
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("ChapterId")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<DateTime>("Created")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<string>("FilePath")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<int>("Format")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<DateTime>("LastFileAnalysis")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<DateTime>("LastModified")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<int>("Pages")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.HasKey("Id");
 | 
						|
 | 
						|
                    b.HasIndex("ChapterId");
 | 
						|
 | 
						|
                    b.ToTable("MangaFile");
 | 
						|
                });
 | 
						|
 | 
						|
            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>("InkerLocked")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<string>("Language")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<bool>("LanguageLocked")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<bool>("LettererLocked")
 | 
						|
                        .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<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<int>("TotalCount")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<bool>("TranslatorLocked")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<bool>("WriterLocked")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.HasKey("Id");
 | 
						|
 | 
						|
                    b.HasIndex("SeriesId")
 | 
						|
                        .IsUnique();
 | 
						|
 | 
						|
                    b.HasIndex("Id", "SeriesId")
 | 
						|
                        .IsUnique();
 | 
						|
 | 
						|
                    b.ToTable("SeriesMetadata");
 | 
						|
                });
 | 
						|
 | 
						|
            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.Person", b =>
 | 
						|
                {
 | 
						|
                    b.Property<int>("Id")
 | 
						|
                        .ValueGeneratedOnAdd()
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<string>("Name")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<string>("NormalizedName")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<int>("Role")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.HasKey("Id");
 | 
						|
 | 
						|
                    b.ToTable("Person");
 | 
						|
                });
 | 
						|
 | 
						|
            modelBuilder.Entity("API.Entities.ReadingList", b =>
 | 
						|
                {
 | 
						|
                    b.Property<int>("Id")
 | 
						|
                        .ValueGeneratedOnAdd()
 | 
						|
                        .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>("LastModified")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<string>("NormalizedTitle")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<bool>("Promoted")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<string>("Summary")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<string>("Title")
 | 
						|
                        .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.Series", b =>
 | 
						|
                {
 | 
						|
                    b.Property<int>("Id")
 | 
						|
                        .ValueGeneratedOnAdd()
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int?>("AppUserId")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("AvgHoursToRead")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<string>("CoverImage")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<bool>("CoverImageLocked")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<DateTime>("Created")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<string>("FolderPath")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<int>("Format")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<DateTime>("LastChapterAdded")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<DateTime>("LastFolderScanned")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<DateTime>("LastModified")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<int>("LibraryId")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<string>("LocalizedName")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<bool>("LocalizedNameLocked")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("MaxHoursToRead")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("MinHoursToRead")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<string>("Name")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<bool>("NameLocked")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<string>("NormalizedName")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<string>("OriginalName")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<int>("Pages")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<string>("SortName")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<bool>("SortNameLocked")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<long>("WordCount")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.HasKey("Id");
 | 
						|
 | 
						|
                    b.HasIndex("AppUserId");
 | 
						|
 | 
						|
                    b.HasIndex("LibraryId");
 | 
						|
 | 
						|
                    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.SiteTheme", b =>
 | 
						|
                {
 | 
						|
                    b.Property<int>("Id")
 | 
						|
                        .ValueGeneratedOnAdd()
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<DateTime>("Created")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<string>("FileName")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<bool>("IsDefault")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<DateTime>("LastModified")
 | 
						|
                        .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("SiteTheme");
 | 
						|
                });
 | 
						|
 | 
						|
            modelBuilder.Entity("API.Entities.Tag", b =>
 | 
						|
                {
 | 
						|
                    b.Property<int>("Id")
 | 
						|
                        .ValueGeneratedOnAdd()
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<bool>("ExternalTag")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<string>("NormalizedTitle")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<string>("Title")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.HasKey("Id");
 | 
						|
 | 
						|
                    b.HasIndex("NormalizedTitle", "ExternalTag")
 | 
						|
                        .IsUnique();
 | 
						|
 | 
						|
                    b.ToTable("Tag");
 | 
						|
                });
 | 
						|
 | 
						|
            modelBuilder.Entity("API.Entities.Volume", b =>
 | 
						|
                {
 | 
						|
                    b.Property<int>("Id")
 | 
						|
                        .ValueGeneratedOnAdd()
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("AvgHoursToRead")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<string>("CoverImage")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<DateTime>("Created")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<DateTime>("LastModified")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<int>("MaxHoursToRead")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("MinHoursToRead")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<string>("Name")
 | 
						|
                        .HasColumnType("TEXT");
 | 
						|
 | 
						|
                    b.Property<int>("Number")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("Pages")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("SeriesId")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<long>("WordCount")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.HasKey("Id");
 | 
						|
 | 
						|
                    b.HasIndex("SeriesId");
 | 
						|
 | 
						|
                    b.ToTable("Volume");
 | 
						|
                });
 | 
						|
 | 
						|
            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("ChapterPerson", b =>
 | 
						|
                {
 | 
						|
                    b.Property<int>("ChapterMetadatasId")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("PeopleId")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.HasKey("ChapterMetadatasId", "PeopleId");
 | 
						|
 | 
						|
                    b.HasIndex("PeopleId");
 | 
						|
 | 
						|
                    b.ToTable("ChapterPerson");
 | 
						|
                });
 | 
						|
 | 
						|
            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("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("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("PersonSeriesMetadata", b =>
 | 
						|
                {
 | 
						|
                    b.Property<int>("PeopleId")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.Property<int>("SeriesMetadatasId")
 | 
						|
                        .HasColumnType("INTEGER");
 | 
						|
 | 
						|
                    b.HasKey("PeopleId", "SeriesMetadatasId");
 | 
						|
 | 
						|
                    b.HasIndex("SeriesMetadatasId");
 | 
						|
 | 
						|
                    b.ToTable("PersonSeriesMetadata");
 | 
						|
                });
 | 
						|
 | 
						|
            modelBuilder.Entity("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.AppUserBookmark", b =>
 | 
						|
                {
 | 
						|
                    b.HasOne("API.Entities.AppUser", "AppUser")
 | 
						|
                        .WithMany("Bookmarks")
 | 
						|
                        .HasForeignKey("AppUserId")
 | 
						|
                        .OnDelete(DeleteBehavior.Cascade)
 | 
						|
                        .IsRequired();
 | 
						|
 | 
						|
                    b.Navigation("AppUser");
 | 
						|
                });
 | 
						|
 | 
						|
            modelBuilder.Entity("API.Entities.AppUserPreferences", b =>
 | 
						|
                {
 | 
						|
                    b.HasOne("API.Entities.AppUser", "AppUser")
 | 
						|
                        .WithOne("UserPreferences")
 | 
						|
                        .HasForeignKey("API.Entities.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.AppUserProgress", b =>
 | 
						|
                {
 | 
						|
                    b.HasOne("API.Entities.AppUser", "AppUser")
 | 
						|
                        .WithMany("Progresses")
 | 
						|
                        .HasForeignKey("AppUserId")
 | 
						|
                        .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.AppUserRating", b =>
 | 
						|
                {
 | 
						|
                    b.HasOne("API.Entities.AppUser", "AppUser")
 | 
						|
                        .WithMany("Ratings")
 | 
						|
                        .HasForeignKey("AppUserId")
 | 
						|
                        .OnDelete(DeleteBehavior.Cascade)
 | 
						|
                        .IsRequired();
 | 
						|
 | 
						|
                    b.HasOne("API.Entities.Series", null)
 | 
						|
                        .WithMany("Ratings")
 | 
						|
                        .HasForeignKey("SeriesId")
 | 
						|
                        .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.Chapter", b =>
 | 
						|
                {
 | 
						|
                    b.HasOne("API.Entities.Volume", "Volume")
 | 
						|
                        .WithMany("Chapters")
 | 
						|
                        .HasForeignKey("VolumeId")
 | 
						|
                        .OnDelete(DeleteBehavior.Cascade)
 | 
						|
                        .IsRequired();
 | 
						|
 | 
						|
                    b.Navigation("Volume");
 | 
						|
                });
 | 
						|
 | 
						|
            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.MangaFile", b =>
 | 
						|
                {
 | 
						|
                    b.HasOne("API.Entities.Chapter", "Chapter")
 | 
						|
                        .WithMany("Files")
 | 
						|
                        .HasForeignKey("ChapterId")
 | 
						|
                        .OnDelete(DeleteBehavior.Cascade)
 | 
						|
                        .IsRequired();
 | 
						|
 | 
						|
                    b.Navigation("Chapter");
 | 
						|
                });
 | 
						|
 | 
						|
            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.SeriesRelation", b =>
 | 
						|
                {
 | 
						|
                    b.HasOne("API.Entities.Series", "Series")
 | 
						|
                        .WithMany("Relations")
 | 
						|
                        .HasForeignKey("SeriesId")
 | 
						|
                        .OnDelete(DeleteBehavior.ClientCascade)
 | 
						|
                        .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.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.Series", b =>
 | 
						|
                {
 | 
						|
                    b.HasOne("API.Entities.AppUser", null)
 | 
						|
                        .WithMany("WantToRead")
 | 
						|
                        .HasForeignKey("AppUserId");
 | 
						|
 | 
						|
                    b.HasOne("API.Entities.Library", "Library")
 | 
						|
                        .WithMany("Series")
 | 
						|
                        .HasForeignKey("LibraryId")
 | 
						|
                        .OnDelete(DeleteBehavior.Cascade)
 | 
						|
                        .IsRequired();
 | 
						|
 | 
						|
                    b.Navigation("Library");
 | 
						|
                });
 | 
						|
 | 
						|
            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("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("ChapterPerson", b =>
 | 
						|
                {
 | 
						|
                    b.HasOne("API.Entities.Chapter", null)
 | 
						|
                        .WithMany()
 | 
						|
                        .HasForeignKey("ChapterMetadatasId")
 | 
						|
                        .OnDelete(DeleteBehavior.Cascade)
 | 
						|
                        .IsRequired();
 | 
						|
 | 
						|
                    b.HasOne("API.Entities.Person", null)
 | 
						|
                        .WithMany()
 | 
						|
                        .HasForeignKey("PeopleId")
 | 
						|
                        .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("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("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("PersonSeriesMetadata", b =>
 | 
						|
                {
 | 
						|
                    b.HasOne("API.Entities.Person", null)
 | 
						|
                        .WithMany()
 | 
						|
                        .HasForeignKey("PeopleId")
 | 
						|
                        .OnDelete(DeleteBehavior.Cascade)
 | 
						|
                        .IsRequired();
 | 
						|
 | 
						|
                    b.HasOne("API.Entities.Metadata.SeriesMetadata", null)
 | 
						|
                        .WithMany()
 | 
						|
                        .HasForeignKey("SeriesMetadatasId")
 | 
						|
                        .OnDelete(DeleteBehavior.Cascade)
 | 
						|
                        .IsRequired();
 | 
						|
                });
 | 
						|
 | 
						|
            modelBuilder.Entity("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.AppRole", b =>
 | 
						|
                {
 | 
						|
                    b.Navigation("UserRoles");
 | 
						|
                });
 | 
						|
 | 
						|
            modelBuilder.Entity("API.Entities.AppUser", b =>
 | 
						|
                {
 | 
						|
                    b.Navigation("Bookmarks");
 | 
						|
 | 
						|
                    b.Navigation("Progresses");
 | 
						|
 | 
						|
                    b.Navigation("Ratings");
 | 
						|
 | 
						|
                    b.Navigation("ReadingLists");
 | 
						|
 | 
						|
                    b.Navigation("UserPreferences");
 | 
						|
 | 
						|
                    b.Navigation("UserRoles");
 | 
						|
 | 
						|
                    b.Navigation("WantToRead");
 | 
						|
                });
 | 
						|
 | 
						|
            modelBuilder.Entity("API.Entities.Chapter", b =>
 | 
						|
                {
 | 
						|
                    b.Navigation("Files");
 | 
						|
                });
 | 
						|
 | 
						|
            modelBuilder.Entity("API.Entities.Library", b =>
 | 
						|
                {
 | 
						|
                    b.Navigation("Folders");
 | 
						|
 | 
						|
                    b.Navigation("Series");
 | 
						|
                });
 | 
						|
 | 
						|
            modelBuilder.Entity("API.Entities.ReadingList", b =>
 | 
						|
                {
 | 
						|
                    b.Navigation("Items");
 | 
						|
                });
 | 
						|
 | 
						|
            modelBuilder.Entity("API.Entities.Series", b =>
 | 
						|
                {
 | 
						|
                    b.Navigation("Metadata");
 | 
						|
 | 
						|
                    b.Navigation("Progress");
 | 
						|
 | 
						|
                    b.Navigation("Ratings");
 | 
						|
 | 
						|
                    b.Navigation("RelationOf");
 | 
						|
 | 
						|
                    b.Navigation("Relations");
 | 
						|
 | 
						|
                    b.Navigation("Volumes");
 | 
						|
                });
 | 
						|
 | 
						|
            modelBuilder.Entity("API.Entities.Volume", b =>
 | 
						|
                {
 | 
						|
                    b.Navigation("Chapters");
 | 
						|
                });
 | 
						|
#pragma warning restore 612, 618
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |