// <auto-generated />
using System;
using API.Schema.Contexts;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;

#nullable disable

namespace API.Migrations.pgsql
{
    [DbContext(typeof(PgsqlContext))]
    [Migration("20250518161710_UpdateCoverJob")]
    partial class UpdateCoverJob
    {
        /// <inheritdoc />
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("ProductVersion", "9.0.5")
                .HasAnnotation("Relational:MaxIdentifierLength", 63);

            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);

            modelBuilder.Entity("API.Schema.Author", b =>
                {
                    b.Property<string>("AuthorId")
                        .HasMaxLength(64)
                        .HasColumnType("character varying(64)");

                    b.Property<string>("AuthorName")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("character varying(128)");

                    b.HasKey("AuthorId");

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

            modelBuilder.Entity("API.Schema.Chapter", b =>
                {
                    b.Property<string>("ChapterId")
                        .HasMaxLength(64)
                        .HasColumnType("character varying(64)");

                    b.Property<string>("ChapterNumber")
                        .IsRequired()
                        .HasMaxLength(10)
                        .HasColumnType("character varying(10)");

                    b.Property<bool>("Downloaded")
                        .HasColumnType("boolean");

                    b.Property<string>("FileName")
                        .IsRequired()
                        .HasMaxLength(256)
                        .HasColumnType("character varying(256)");

                    b.Property<string>("IdOnConnectorSite")
                        .HasMaxLength(256)
                        .HasColumnType("character varying(256)");

                    b.Property<string>("ParentMangaId")
                        .IsRequired()
                        .HasColumnType("character varying(64)");

                    b.Property<string>("Title")
                        .HasMaxLength(256)
                        .HasColumnType("character varying(256)");

                    b.Property<string>("Url")
                        .IsRequired()
                        .HasMaxLength(2048)
                        .HasColumnType("character varying(2048)");

                    b.Property<int?>("VolumeNumber")
                        .HasColumnType("integer");

                    b.HasKey("ChapterId");

                    b.HasIndex("ParentMangaId");

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

            modelBuilder.Entity("API.Schema.Jobs.Job", b =>
                {
                    b.Property<string>("JobId")
                        .HasMaxLength(64)
                        .HasColumnType("character varying(64)");

                    b.Property<bool>("Enabled")
                        .HasColumnType("boolean");

                    b.Property<byte>("JobType")
                        .HasColumnType("smallint");

                    b.Property<DateTime>("LastExecution")
                        .HasColumnType("timestamp with time zone");

                    b.Property<string>("ParentJobId")
                        .HasMaxLength(64)
                        .HasColumnType("character varying(64)");

                    b.Property<decimal>("RecurrenceMs")
                        .HasColumnType("numeric(20,0)");

                    b.Property<byte>("state")
                        .HasColumnType("smallint");

                    b.HasKey("JobId");

                    b.HasIndex("ParentJobId");

                    b.ToTable("Jobs");

                    b.HasDiscriminator<byte>("JobType");

                    b.UseTphMappingStrategy();
                });

            modelBuilder.Entity("API.Schema.LocalLibrary", b =>
                {
                    b.Property<string>("LocalLibraryId")
                        .HasMaxLength(64)
                        .HasColumnType("character varying(64)");

                    b.Property<string>("BasePath")
                        .IsRequired()
                        .HasMaxLength(256)
                        .HasColumnType("character varying(256)");

                    b.Property<string>("LibraryName")
                        .IsRequired()
                        .HasMaxLength(512)
                        .HasColumnType("character varying(512)");

                    b.HasKey("LocalLibraryId");

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

            modelBuilder.Entity("API.Schema.Manga", b =>
                {
                    b.Property<string>("MangaId")
                        .HasMaxLength(64)
                        .HasColumnType("character varying(64)");

                    b.Property<string>("CoverFileNameInCache")
                        .HasMaxLength(512)
                        .HasColumnType("character varying(512)");

                    b.Property<string>("CoverUrl")
                        .IsRequired()
                        .HasMaxLength(512)
                        .HasColumnType("character varying(512)");

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

                    b.Property<string>("DirectoryName")
                        .IsRequired()
                        .HasMaxLength(1024)
                        .HasColumnType("character varying(1024)");

                    b.Property<string>("IdOnConnectorSite")
                        .IsRequired()
                        .HasMaxLength(256)
                        .HasColumnType("character varying(256)");

                    b.Property<float>("IgnoreChaptersBefore")
                        .HasColumnType("real");

                    b.Property<string>("LibraryId")
                        .HasMaxLength(64)
                        .HasColumnType("character varying(64)");

                    b.Property<string>("MangaConnectorName")
                        .IsRequired()
                        .HasMaxLength(32)
                        .HasColumnType("character varying(32)");

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasMaxLength(512)
                        .HasColumnType("character varying(512)");

                    b.Property<string>("OriginalLanguage")
                        .HasMaxLength(8)
                        .HasColumnType("character varying(8)");

                    b.Property<byte>("ReleaseStatus")
                        .HasColumnType("smallint");

                    b.Property<string>("WebsiteUrl")
                        .IsRequired()
                        .HasMaxLength(512)
                        .HasColumnType("character varying(512)");

                    b.Property<long?>("Year")
                        .HasColumnType("bigint");

                    b.HasKey("MangaId");

                    b.HasIndex("LibraryId");

                    b.HasIndex("MangaConnectorName");

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

            modelBuilder.Entity("API.Schema.MangaConnectors.MangaConnector", b =>
                {
                    b.Property<string>("Name")
                        .HasMaxLength(32)
                        .HasColumnType("character varying(32)");

                    b.PrimitiveCollection<string[]>("BaseUris")
                        .IsRequired()
                        .HasMaxLength(256)
                        .HasColumnType("text[]");

                    b.Property<bool>("Enabled")
                        .HasColumnType("boolean");

                    b.Property<string>("IconUrl")
                        .IsRequired()
                        .HasMaxLength(2048)
                        .HasColumnType("character varying(2048)");

                    b.PrimitiveCollection<string[]>("SupportedLanguages")
                        .IsRequired()
                        .HasMaxLength(8)
                        .HasColumnType("text[]");

                    b.HasKey("Name");

                    b.ToTable("MangaConnectors");

                    b.HasDiscriminator<string>("Name").HasValue("MangaConnector");

                    b.UseTphMappingStrategy();
                });

            modelBuilder.Entity("API.Schema.MangaTag", b =>
                {
                    b.Property<string>("Tag")
                        .HasMaxLength(64)
                        .HasColumnType("character varying(64)");

                    b.HasKey("Tag");

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

            modelBuilder.Entity("AuthorToManga", b =>
                {
                    b.Property<string>("AuthorIds")
                        .HasColumnType("character varying(64)");

                    b.Property<string>("MangaIds")
                        .HasColumnType("character varying(64)");

                    b.HasKey("AuthorIds", "MangaIds");

                    b.HasIndex("MangaIds");

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

            modelBuilder.Entity("JobJob", b =>
                {
                    b.Property<string>("DependsOnJobsJobId")
                        .HasColumnType("character varying(64)");

                    b.Property<string>("JobId")
                        .HasColumnType("character varying(64)");

                    b.HasKey("DependsOnJobsJobId", "JobId");

                    b.HasIndex("JobId");

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

            modelBuilder.Entity("MangaTagToManga", b =>
                {
                    b.Property<string>("MangaTagIds")
                        .HasColumnType("character varying(64)");

                    b.Property<string>("MangaIds")
                        .HasColumnType("character varying(64)");

                    b.HasKey("MangaTagIds", "MangaIds");

                    b.HasIndex("MangaIds");

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

            modelBuilder.Entity("API.Schema.Jobs.DownloadAvailableChaptersJob", b =>
                {
                    b.HasBaseType("API.Schema.Jobs.Job");

                    b.Property<string>("MangaId")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("character varying(64)");

                    b.HasIndex("MangaId");

                    b.ToTable("Jobs", t =>
                        {
                            t.Property("MangaId")
                                .HasColumnName("DownloadAvailableChaptersJob_MangaId");
                        });

                    b.HasDiscriminator().HasValue((byte)1);
                });

            modelBuilder.Entity("API.Schema.Jobs.DownloadMangaCoverJob", b =>
                {
                    b.HasBaseType("API.Schema.Jobs.Job");

                    b.Property<string>("MangaId")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("character varying(64)");

                    b.HasIndex("MangaId");

                    b.HasDiscriminator().HasValue((byte)4);
                });

            modelBuilder.Entity("API.Schema.Jobs.DownloadSingleChapterJob", b =>
                {
                    b.HasBaseType("API.Schema.Jobs.Job");

                    b.Property<string>("ChapterId")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("character varying(64)");

                    b.HasIndex("ChapterId");

                    b.HasDiscriminator().HasValue((byte)0);
                });

            modelBuilder.Entity("API.Schema.Jobs.MoveFileOrFolderJob", b =>
                {
                    b.HasBaseType("API.Schema.Jobs.Job");

                    b.Property<string>("FromLocation")
                        .IsRequired()
                        .HasMaxLength(256)
                        .HasColumnType("character varying(256)");

                    b.Property<string>("ToLocation")
                        .IsRequired()
                        .HasMaxLength(256)
                        .HasColumnType("character varying(256)");

                    b.HasDiscriminator().HasValue((byte)3);
                });

            modelBuilder.Entity("API.Schema.Jobs.MoveMangaLibraryJob", b =>
                {
                    b.HasBaseType("API.Schema.Jobs.Job");

                    b.Property<string>("MangaId")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("character varying(64)");

                    b.Property<string>("ToLibraryId")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("character varying(64)");

                    b.HasIndex("MangaId");

                    b.HasIndex("ToLibraryId");

                    b.ToTable("Jobs", t =>
                        {
                            t.Property("MangaId")
                                .HasColumnName("MoveMangaLibraryJob_MangaId");
                        });

                    b.HasDiscriminator().HasValue((byte)7);
                });

            modelBuilder.Entity("API.Schema.Jobs.RetrieveChaptersJob", b =>
                {
                    b.HasBaseType("API.Schema.Jobs.Job");

                    b.Property<string>("Language")
                        .IsRequired()
                        .HasMaxLength(8)
                        .HasColumnType("character varying(8)");

                    b.Property<string>("MangaId")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("character varying(64)");

                    b.HasIndex("MangaId");

                    b.ToTable("Jobs", t =>
                        {
                            t.Property("MangaId")
                                .HasColumnName("RetrieveChaptersJob_MangaId");
                        });

                    b.HasDiscriminator().HasValue((byte)5);
                });

            modelBuilder.Entity("API.Schema.Jobs.UpdateChaptersDownloadedJob", b =>
                {
                    b.HasBaseType("API.Schema.Jobs.Job");

                    b.Property<string>("MangaId")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("character varying(64)");

                    b.HasIndex("MangaId");

                    b.ToTable("Jobs", t =>
                        {
                            t.Property("MangaId")
                                .HasColumnName("UpdateChaptersDownloadedJob_MangaId");
                        });

                    b.HasDiscriminator().HasValue((byte)6);
                });

            modelBuilder.Entity("API.Schema.Jobs.UpdateCoverJob", b =>
                {
                    b.HasBaseType("API.Schema.Jobs.Job");

                    b.Property<string>("MangaId")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("character varying(64)");

                    b.HasIndex("MangaId");

                    b.ToTable("Jobs", t =>
                        {
                            t.Property("MangaId")
                                .HasColumnName("UpdateCoverJob_MangaId");
                        });

                    b.HasDiscriminator().HasValue((byte)9);
                });

            modelBuilder.Entity("API.Schema.Jobs.UpdateSingleChapterDownloadedJob", b =>
                {
                    b.HasBaseType("API.Schema.Jobs.Job");

                    b.Property<string>("ChapterId")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("character varying(64)");

                    b.HasIndex("ChapterId");

                    b.ToTable("Jobs", t =>
                        {
                            t.Property("ChapterId")
                                .HasColumnName("UpdateSingleChapterDownloadedJob_ChapterId");
                        });

                    b.HasDiscriminator().HasValue((byte)8);
                });

            modelBuilder.Entity("API.Schema.MangaConnectors.ComickIo", b =>
                {
                    b.HasBaseType("API.Schema.MangaConnectors.MangaConnector");

                    b.HasDiscriminator().HasValue("ComickIo");
                });

            modelBuilder.Entity("API.Schema.MangaConnectors.Global", b =>
                {
                    b.HasBaseType("API.Schema.MangaConnectors.MangaConnector");

                    b.HasDiscriminator().HasValue("Global");
                });

            modelBuilder.Entity("API.Schema.MangaConnectors.MangaDex", b =>
                {
                    b.HasBaseType("API.Schema.MangaConnectors.MangaConnector");

                    b.HasDiscriminator().HasValue("MangaDex");
                });

            modelBuilder.Entity("API.Schema.Chapter", b =>
                {
                    b.HasOne("API.Schema.Manga", "ParentManga")
                        .WithMany("Chapters")
                        .HasForeignKey("ParentMangaId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("ParentManga");
                });

            modelBuilder.Entity("API.Schema.Jobs.Job", b =>
                {
                    b.HasOne("API.Schema.Jobs.Job", "ParentJob")
                        .WithMany()
                        .HasForeignKey("ParentJobId")
                        .OnDelete(DeleteBehavior.Cascade);

                    b.Navigation("ParentJob");
                });

            modelBuilder.Entity("API.Schema.Manga", b =>
                {
                    b.HasOne("API.Schema.LocalLibrary", "Library")
                        .WithMany()
                        .HasForeignKey("LibraryId")
                        .OnDelete(DeleteBehavior.SetNull);

                    b.HasOne("API.Schema.MangaConnectors.MangaConnector", "MangaConnector")
                        .WithMany()
                        .HasForeignKey("MangaConnectorName")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.OwnsMany("API.Schema.Link", "Links", b1 =>
                        {
                            b1.Property<string>("LinkId")
                                .HasMaxLength(64)
                                .HasColumnType("character varying(64)");

                            b1.Property<string>("LinkProvider")
                                .IsRequired()
                                .HasMaxLength(64)
                                .HasColumnType("character varying(64)");

                            b1.Property<string>("LinkUrl")
                                .IsRequired()
                                .HasMaxLength(2048)
                                .HasColumnType("character varying(2048)");

                            b1.Property<string>("MangaId")
                                .IsRequired()
                                .HasColumnType("character varying(64)");

                            b1.HasKey("LinkId");

                            b1.HasIndex("MangaId");

                            b1.ToTable("Link");

                            b1.WithOwner()
                                .HasForeignKey("MangaId");
                        });

                    b.OwnsMany("API.Schema.MangaAltTitle", "AltTitles", b1 =>
                        {
                            b1.Property<string>("AltTitleId")
                                .HasMaxLength(64)
                                .HasColumnType("character varying(64)");

                            b1.Property<string>("Language")
                                .IsRequired()
                                .HasMaxLength(8)
                                .HasColumnType("character varying(8)");

                            b1.Property<string>("MangaId")
                                .IsRequired()
                                .HasColumnType("character varying(64)");

                            b1.Property<string>("Title")
                                .IsRequired()
                                .HasMaxLength(256)
                                .HasColumnType("character varying(256)");

                            b1.HasKey("AltTitleId");

                            b1.HasIndex("MangaId");

                            b1.ToTable("MangaAltTitle");

                            b1.WithOwner()
                                .HasForeignKey("MangaId");
                        });

                    b.Navigation("AltTitles");

                    b.Navigation("Library");

                    b.Navigation("Links");

                    b.Navigation("MangaConnector");
                });

            modelBuilder.Entity("AuthorToManga", b =>
                {
                    b.HasOne("API.Schema.Author", null)
                        .WithMany()
                        .HasForeignKey("AuthorIds")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Schema.Manga", null)
                        .WithMany()
                        .HasForeignKey("MangaIds")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("JobJob", b =>
                {
                    b.HasOne("API.Schema.Jobs.Job", null)
                        .WithMany()
                        .HasForeignKey("DependsOnJobsJobId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Schema.Jobs.Job", null)
                        .WithMany()
                        .HasForeignKey("JobId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("MangaTagToManga", b =>
                {
                    b.HasOne("API.Schema.Manga", null)
                        .WithMany()
                        .HasForeignKey("MangaIds")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Schema.MangaTag", null)
                        .WithMany()
                        .HasForeignKey("MangaTagIds")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("API.Schema.Jobs.DownloadAvailableChaptersJob", b =>
                {
                    b.HasOne("API.Schema.Manga", "Manga")
                        .WithMany()
                        .HasForeignKey("MangaId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Manga");
                });

            modelBuilder.Entity("API.Schema.Jobs.DownloadMangaCoverJob", b =>
                {
                    b.HasOne("API.Schema.Manga", "Manga")
                        .WithMany()
                        .HasForeignKey("MangaId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Manga");
                });

            modelBuilder.Entity("API.Schema.Jobs.DownloadSingleChapterJob", b =>
                {
                    b.HasOne("API.Schema.Chapter", "Chapter")
                        .WithMany()
                        .HasForeignKey("ChapterId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

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

            modelBuilder.Entity("API.Schema.Jobs.MoveMangaLibraryJob", b =>
                {
                    b.HasOne("API.Schema.Manga", "Manga")
                        .WithMany()
                        .HasForeignKey("MangaId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("API.Schema.LocalLibrary", "ToLibrary")
                        .WithMany()
                        .HasForeignKey("ToLibraryId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Manga");

                    b.Navigation("ToLibrary");
                });

            modelBuilder.Entity("API.Schema.Jobs.RetrieveChaptersJob", b =>
                {
                    b.HasOne("API.Schema.Manga", "Manga")
                        .WithMany()
                        .HasForeignKey("MangaId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Manga");
                });

            modelBuilder.Entity("API.Schema.Jobs.UpdateChaptersDownloadedJob", b =>
                {
                    b.HasOne("API.Schema.Manga", "Manga")
                        .WithMany()
                        .HasForeignKey("MangaId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Manga");
                });

            modelBuilder.Entity("API.Schema.Jobs.UpdateCoverJob", b =>
                {
                    b.HasOne("API.Schema.Manga", "Manga")
                        .WithMany()
                        .HasForeignKey("MangaId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Manga");
                });

            modelBuilder.Entity("API.Schema.Jobs.UpdateSingleChapterDownloadedJob", b =>
                {
                    b.HasOne("API.Schema.Chapter", "Chapter")
                        .WithMany()
                        .HasForeignKey("ChapterId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

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

            modelBuilder.Entity("API.Schema.Manga", b =>
                {
                    b.Navigation("Chapters");
                });
#pragma warning restore 612, 618
        }
    }
}