// using System; using API.Schema; 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 { [DbContext(typeof(PgsqlContext))] [Migration("20250111180034_ChapterNumber")] partial class ChapterNumber { /// protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "9.0.0") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("API.Schema.Author", b => { b.Property("AuthorId") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("AuthorName") .IsRequired() .HasColumnType("text"); b.HasKey("AuthorId"); b.ToTable("Authors"); }); modelBuilder.Entity("API.Schema.Chapter", b => { b.Property("ChapterId") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("ArchiveFileName") .IsRequired() .HasColumnType("text"); b.Property("ChapterNumber") .IsRequired() .HasMaxLength(10) .HasColumnType("character varying(10)"); b.Property("Downloaded") .HasColumnType("boolean"); b.Property("ParentMangaId") .IsRequired() .HasColumnType("character varying(64)"); b.Property("Title") .HasColumnType("text"); b.Property("Url") .IsRequired() .HasColumnType("text"); b.Property("VolumeNumber") .HasColumnType("integer"); b.HasKey("ChapterId"); b.HasIndex("ParentMangaId"); b.ToTable("Chapters"); }); modelBuilder.Entity("API.Schema.Jobs.Job", b => { b.Property("JobId") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.PrimitiveCollection("DependsOnJobsIds") .HasMaxLength(64) .HasColumnType("text[]"); b.Property("JobId1") .HasColumnType("character varying(64)"); b.Property("JobType") .HasColumnType("smallint"); b.Property("LastExecution") .HasColumnType("timestamp with time zone"); b.Property("ParentJobId") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("RecurrenceMs") .HasColumnType("numeric(20,0)"); b.Property("state") .HasColumnType("integer"); b.HasKey("JobId"); b.HasIndex("JobId1"); b.HasIndex("ParentJobId"); b.ToTable("Jobs"); b.HasDiscriminator("JobType"); b.UseTphMappingStrategy(); }); modelBuilder.Entity("API.Schema.LibraryConnectors.LibraryConnector", b => { b.Property("LibraryConnectorId") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("Auth") .IsRequired() .HasColumnType("text"); b.Property("BaseUrl") .IsRequired() .HasColumnType("text"); b.Property("LibraryType") .HasColumnType("smallint"); b.HasKey("LibraryConnectorId"); b.ToTable("LibraryConnectors"); b.HasDiscriminator("LibraryType"); b.UseTphMappingStrategy(); }); modelBuilder.Entity("API.Schema.Link", b => { b.Property("LinkId") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("LinkProvider") .IsRequired() .HasColumnType("text"); b.Property("LinkUrl") .IsRequired() .HasColumnType("text"); b.Property("MangaId") .HasColumnType("character varying(64)"); b.HasKey("LinkId"); b.HasIndex("MangaId"); b.ToTable("Link"); }); modelBuilder.Entity("API.Schema.Manga", b => { b.Property("MangaId") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("ConnectorId") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("CoverFileNameInCache") .HasColumnType("text"); b.Property("CoverUrl") .IsRequired() .HasColumnType("text"); b.Property("Description") .IsRequired() .HasColumnType("text"); b.Property("FolderName") .IsRequired() .HasColumnType("text"); b.Property("IgnoreChapterBefore") .HasColumnType("real"); b.Property("MangaConnectorId") .IsRequired() .HasColumnType("character varying(32)"); b.Property("Name") .IsRequired() .HasColumnType("text"); b.Property("OriginalLanguage") .HasColumnType("text"); b.Property("ReleaseStatus") .HasColumnType("smallint"); b.Property("WebsiteUrl") .IsRequired() .HasColumnType("text"); b.Property("Year") .HasColumnType("bigint"); b.HasKey("MangaId"); b.HasIndex("MangaConnectorId"); b.ToTable("Manga"); }); modelBuilder.Entity("API.Schema.MangaAltTitle", b => { b.Property("AltTitleId") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("Language") .IsRequired() .HasMaxLength(8) .HasColumnType("character varying(8)"); b.Property("MangaId") .HasColumnType("character varying(64)"); b.Property("Title") .IsRequired() .HasColumnType("text"); b.HasKey("AltTitleId"); b.HasIndex("MangaId"); b.ToTable("AltTitles"); }); modelBuilder.Entity("API.Schema.MangaConnectors.MangaConnector", b => { b.Property("Name") .HasMaxLength(32) .HasColumnType("character varying(32)"); b.PrimitiveCollection("BaseUris") .IsRequired() .HasColumnType("text[]"); b.PrimitiveCollection("SupportedLanguages") .IsRequired() .HasColumnType("text[]"); b.HasKey("Name"); b.ToTable("MangaConnectors"); b.HasDiscriminator("Name").HasValue("MangaConnector"); b.UseTphMappingStrategy(); }); modelBuilder.Entity("API.Schema.MangaTag", b => { b.Property("Tag") .HasColumnType("text"); b.HasKey("Tag"); b.ToTable("Tags"); }); modelBuilder.Entity("API.Schema.Notification", b => { b.Property("NotificationId") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("Date") .HasColumnType("timestamp with time zone"); b.Property("Message") .IsRequired() .HasColumnType("text"); b.Property("Title") .IsRequired() .HasColumnType("text"); b.Property("Urgency") .HasColumnType("smallint"); b.HasKey("NotificationId"); b.ToTable("Notifications"); }); modelBuilder.Entity("API.Schema.NotificationConnectors.NotificationConnector", b => { b.Property("NotificationConnectorId") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("NotificationConnectorType") .HasColumnType("smallint"); b.HasKey("NotificationConnectorId"); b.ToTable("NotificationConnectors"); b.HasDiscriminator("NotificationConnectorType"); b.UseTphMappingStrategy(); }); modelBuilder.Entity("AuthorManga", b => { b.Property("AuthorsAuthorId") .HasColumnType("character varying(64)"); b.Property("MangaId") .HasColumnType("character varying(64)"); b.HasKey("AuthorsAuthorId", "MangaId"); b.HasIndex("MangaId"); b.ToTable("AuthorManga"); }); modelBuilder.Entity("MangaMangaTag", b => { b.Property("MangaId") .HasColumnType("character varying(64)"); b.Property("TagsTag") .HasColumnType("text"); b.HasKey("MangaId", "TagsTag"); b.HasIndex("TagsTag"); b.ToTable("MangaMangaTag"); }); modelBuilder.Entity("API.Schema.Jobs.DownloadNewChaptersJob", b => { b.HasBaseType("API.Schema.Jobs.Job"); b.Property("MangaId") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)"); b.HasIndex("MangaId"); b.HasDiscriminator().HasValue((byte)1); }); modelBuilder.Entity("API.Schema.Jobs.DownloadSingleChapterJob", b => { b.HasBaseType("API.Schema.Jobs.Job"); b.Property("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("FromLocation") .IsRequired() .HasColumnType("text"); b.Property("ToLocation") .IsRequired() .HasColumnType("text"); b.HasDiscriminator().HasValue((byte)3); }); modelBuilder.Entity("API.Schema.Jobs.UpdateMetadataJob", b => { b.HasBaseType("API.Schema.Jobs.Job"); b.Property("MangaId") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)"); b.HasIndex("MangaId"); b.ToTable("Jobs", t => { t.Property("MangaId") .HasColumnName("UpdateMetadataJob_MangaId"); }); b.HasDiscriminator().HasValue((byte)2); }); modelBuilder.Entity("API.Schema.LibraryConnectors.Kavita", b => { b.HasBaseType("API.Schema.LibraryConnectors.LibraryConnector"); b.HasDiscriminator().HasValue((byte)1); }); modelBuilder.Entity("API.Schema.LibraryConnectors.Komga", b => { b.HasBaseType("API.Schema.LibraryConnectors.LibraryConnector"); b.HasDiscriminator().HasValue((byte)0); }); modelBuilder.Entity("API.Schema.MangaConnectors.AsuraToon", b => { b.HasBaseType("API.Schema.MangaConnectors.MangaConnector"); b.HasDiscriminator().HasValue("AsuraToon"); }); modelBuilder.Entity("API.Schema.MangaConnectors.Bato", b => { b.HasBaseType("API.Schema.MangaConnectors.MangaConnector"); b.HasDiscriminator().HasValue("Bato"); }); modelBuilder.Entity("API.Schema.MangaConnectors.MangaDex", b => { b.HasBaseType("API.Schema.MangaConnectors.MangaConnector"); b.HasDiscriminator().HasValue("MangaDex"); }); modelBuilder.Entity("API.Schema.MangaConnectors.MangaHere", b => { b.HasBaseType("API.Schema.MangaConnectors.MangaConnector"); b.HasDiscriminator().HasValue("MangaHere"); }); modelBuilder.Entity("API.Schema.MangaConnectors.MangaKatana", b => { b.HasBaseType("API.Schema.MangaConnectors.MangaConnector"); b.HasDiscriminator().HasValue("MangaKatana"); }); modelBuilder.Entity("API.Schema.MangaConnectors.MangaLife", b => { b.HasBaseType("API.Schema.MangaConnectors.MangaConnector"); b.HasDiscriminator().HasValue("Manga4Life"); }); modelBuilder.Entity("API.Schema.MangaConnectors.Manganato", b => { b.HasBaseType("API.Schema.MangaConnectors.MangaConnector"); b.HasDiscriminator().HasValue("Manganato"); }); modelBuilder.Entity("API.Schema.MangaConnectors.Mangasee", b => { b.HasBaseType("API.Schema.MangaConnectors.MangaConnector"); b.HasDiscriminator().HasValue("Mangasee"); }); modelBuilder.Entity("API.Schema.MangaConnectors.Mangaworld", b => { b.HasBaseType("API.Schema.MangaConnectors.MangaConnector"); b.HasDiscriminator().HasValue("Mangaworld"); }); modelBuilder.Entity("API.Schema.MangaConnectors.ManhuaPlus", b => { b.HasBaseType("API.Schema.MangaConnectors.MangaConnector"); b.HasDiscriminator().HasValue("ManhuaPlus"); }); modelBuilder.Entity("API.Schema.MangaConnectors.Weebcentral", b => { b.HasBaseType("API.Schema.MangaConnectors.MangaConnector"); b.HasDiscriminator().HasValue("Weebcentral"); }); modelBuilder.Entity("API.Schema.NotificationConnectors.Gotify", b => { b.HasBaseType("API.Schema.NotificationConnectors.NotificationConnector"); b.Property("AppToken") .IsRequired() .HasColumnType("text"); b.Property("Endpoint") .IsRequired() .HasColumnType("text"); b.HasDiscriminator().HasValue((byte)0); }); modelBuilder.Entity("API.Schema.NotificationConnectors.Lunasea", b => { b.HasBaseType("API.Schema.NotificationConnectors.NotificationConnector"); b.Property("Id") .IsRequired() .HasColumnType("text"); b.HasDiscriminator().HasValue((byte)1); }); modelBuilder.Entity("API.Schema.NotificationConnectors.Ntfy", b => { b.HasBaseType("API.Schema.NotificationConnectors.NotificationConnector"); b.Property("Auth") .IsRequired() .HasColumnType("text"); b.Property("Endpoint") .IsRequired() .HasColumnType("text"); b.Property("Topic") .IsRequired() .HasColumnType("text"); b.ToTable("NotificationConnectors", t => { t.Property("Endpoint") .HasColumnName("Ntfy_Endpoint"); }); b.HasDiscriminator().HasValue((byte)2); }); modelBuilder.Entity("API.Schema.Chapter", b => { b.HasOne("API.Schema.Manga", "ParentManga") .WithMany() .HasForeignKey("ParentMangaId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("ParentManga"); }); modelBuilder.Entity("API.Schema.Jobs.Job", b => { b.HasOne("API.Schema.Jobs.Job", null) .WithMany("DependsOnJobs") .HasForeignKey("JobId1"); b.HasOne("API.Schema.Jobs.Job", "ParentJob") .WithMany() .HasForeignKey("ParentJobId"); b.Navigation("ParentJob"); }); modelBuilder.Entity("API.Schema.Link", b => { b.HasOne("API.Schema.Manga", null) .WithMany("Links") .HasForeignKey("MangaId"); }); modelBuilder.Entity("API.Schema.Manga", b => { b.HasOne("API.Schema.MangaConnectors.MangaConnector", "MangaConnector") .WithMany() .HasForeignKey("MangaConnectorId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("MangaConnector"); }); modelBuilder.Entity("API.Schema.MangaAltTitle", b => { b.HasOne("API.Schema.Manga", null) .WithMany("AltTitles") .HasForeignKey("MangaId"); }); modelBuilder.Entity("AuthorManga", b => { b.HasOne("API.Schema.Author", null) .WithMany() .HasForeignKey("AuthorsAuthorId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("API.Schema.Manga", null) .WithMany() .HasForeignKey("MangaId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("MangaMangaTag", b => { b.HasOne("API.Schema.Manga", null) .WithMany() .HasForeignKey("MangaId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("API.Schema.MangaTag", null) .WithMany() .HasForeignKey("TagsTag") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("API.Schema.Jobs.DownloadNewChaptersJob", 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.UpdateMetadataJob", b => { b.HasOne("API.Schema.Manga", "Manga") .WithMany() .HasForeignKey("MangaId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Manga"); }); modelBuilder.Entity("API.Schema.Jobs.Job", b => { b.Navigation("DependsOnJobs"); }); modelBuilder.Entity("API.Schema.Manga", b => { b.Navigation("AltTitles"); b.Navigation("Links"); }); #pragma warning restore 612, 618 } } }