// using System; using ChapterX.Infrastructure.Data.DataContext; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace ChapterX.Infrastructure.Migrations { [DbContext(typeof(ApplicationDbContext))] partial class ApplicationDbContextModelSnapshot : ModelSnapshot { protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "9.0.1") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("ChapterX.Domain.Entities.AISuggestion", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("suggestion_id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Accepted") .HasColumnType("boolean") .HasColumnName("accepted"); b.Property("AppliedAt") .HasColumnType("timestamp with time zone") .HasColumnName("applied_at"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasColumnName("suggestion_created_at"); b.Property("OriginalText") .IsRequired() .HasColumnType("text") .HasColumnName("original_text"); b.Property("StoryId") .HasColumnType("integer") .HasColumnName("story_id"); b.Property("SuggestedText") .IsRequired() .HasColumnType("text") .HasColumnName("suggested_text"); b.Property("SuggestionType") .IsRequired() .HasColumnType("text") .HasColumnName("suggestion_type"); b.HasKey("Id"); b.HasIndex("StoryId"); b.ToTable("ai_suggestion", (string)null); }); modelBuilder.Entity("ChapterX.Domain.Entities.Admin", b => { b.Property("Id") .HasColumnType("integer") .HasColumnName("user_id"); b.Property("AssignedAt") .HasColumnType("timestamp with time zone") .HasColumnName("assigned_at"); b.HasKey("Id"); b.ToTable("admins", (string)null); }); modelBuilder.Entity("ChapterX.Domain.Entities.Chapter", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("chapter_id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Content") .IsRequired() .HasColumnType("text") .HasColumnName("chapter_content"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasColumnName("chapter_created_at"); b.Property("Name") .IsRequired() .HasColumnType("text") .HasColumnName("chapter_name"); b.Property("Number") .HasColumnType("integer") .HasColumnName("chapter_number"); b.Property("PublishedAt") .HasColumnType("timestamp with time zone") .HasColumnName("published_at"); b.Property("Rating") .HasColumnType("numeric") .HasColumnName("rating"); b.Property("StoryId") .HasColumnType("integer") .HasColumnName("story_id"); b.Property("Title") .IsRequired() .HasColumnType("text") .HasColumnName("title"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasColumnName("chapter_updated_at"); b.Property("ViewCount") .HasColumnType("integer") .HasColumnName("view_count"); b.Property("WordCount") .HasColumnType("integer") .HasColumnName("word_count"); b.HasKey("Id"); b.HasIndex("StoryId"); b.ToTable("chapter", (string)null); }); modelBuilder.Entity("ChapterX.Domain.Entities.Collaboration", b => { b.Property("UserId") .HasColumnType("integer") .HasColumnName("user_id"); b.Property("StoryId") .HasColumnType("integer") .HasColumnName("story_id"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasColumnName("collab_created_at"); b.Property("PermissionLevel") .HasColumnType("integer") .HasColumnName("permission_level"); b.Property("Role") .IsRequired() .HasColumnType("text") .HasColumnName("role"); b.HasKey("UserId", "StoryId"); b.HasIndex("StoryId"); b.ToTable("collaboration", (string)null); }); modelBuilder.Entity("ChapterX.Domain.Entities.Comment", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("comment_id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Content") .IsRequired() .HasColumnType("text") .HasColumnName("comment_content"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasColumnName("comment_created_at"); b.Property("StoryId") .HasColumnType("integer") .HasColumnName("story_id"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasColumnName("comment_updated_at"); b.Property("UserId") .HasColumnType("integer") .HasColumnName("user_id"); b.HasKey("Id"); b.HasIndex("StoryId"); b.HasIndex("UserId"); b.ToTable("comment", (string)null); }); modelBuilder.Entity("ChapterX.Domain.Entities.Genre", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("genre_id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Name") .IsRequired() .HasColumnType("text") .HasColumnName("genre_name"); b.HasKey("Id"); b.ToTable("genre", (string)null); }); modelBuilder.Entity("ChapterX.Domain.Entities.HasGenre", b => { b.Property("StoryId") .HasColumnType("integer") .HasColumnName("story_id"); b.Property("GenreId") .HasColumnType("integer") .HasColumnName("genre_id"); b.HasKey("StoryId", "GenreId"); b.HasIndex("GenreId"); b.ToTable("has_genre", (string)null); }); modelBuilder.Entity("ChapterX.Domain.Entities.Likes", b => { b.Property("UserId") .HasColumnType("integer") .HasColumnName("user_id"); b.Property("StoryId") .HasColumnType("integer") .HasColumnName("story_id"); b.Property("LikedAt") .HasColumnType("timestamp with time zone") .HasColumnName("liked_at"); b.HasKey("UserId", "StoryId"); b.HasIndex("StoryId"); b.ToTable("likes", (string)null); }); modelBuilder.Entity("ChapterX.Domain.Entities.NeedApproval", b => { b.Property("SuggestionId") .HasColumnType("integer") .HasColumnName("suggestion_id"); b.Property("StoryId") .HasColumnType("integer") .HasColumnName("story_id"); b.Property("ChapterId") .HasColumnType("integer") .HasColumnName("chapter_id"); b.HasKey("SuggestionId", "StoryId", "ChapterId"); b.HasIndex("ChapterId"); b.HasIndex("StoryId"); b.ToTable("need_approval", (string)null); }); modelBuilder.Entity("ChapterX.Domain.Entities.Notification", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("notification_id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Content") .IsRequired() .HasColumnType("text") .HasColumnName("notification_content"); b.Property("ContentType") .IsRequired() .HasColumnType("text") .HasColumnName("content_type"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasColumnName("notification_created_at"); b.Property("IsRead") .HasColumnType("boolean") .HasColumnName("is_read"); b.Property("Link") .HasColumnType("text") .HasColumnName("link"); b.Property("StoryId") .HasColumnType("integer") .HasColumnName("story_id"); b.Property("UserId") .HasColumnType("integer") .HasColumnName("user_id"); b.HasKey("Id"); b.HasIndex("StoryId"); b.HasIndex("UserId"); b.ToTable("notification", (string)null); }); modelBuilder.Entity("ChapterX.Domain.Entities.ReadingList", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("list_id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Content") .HasColumnType("text") .HasColumnName("list_content"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasColumnName("list_created_at"); b.Property("IsPublic") .HasColumnType("boolean") .HasColumnName("is_public"); b.Property("Name") .IsRequired() .HasColumnType("text") .HasColumnName("list_name"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasColumnName("list_updated_at"); b.Property("UserId") .HasColumnType("integer") .HasColumnName("user_id"); b.HasKey("Id"); b.HasIndex("UserId"); b.ToTable("reading_list", (string)null); }); modelBuilder.Entity("ChapterX.Domain.Entities.ReadingListItems", b => { b.Property("ListId") .HasColumnType("integer") .HasColumnName("list_id"); b.Property("StoryId") .HasColumnType("integer") .HasColumnName("story_id"); b.Property("AddedAt") .HasColumnType("timestamp with time zone") .HasColumnName("added_at"); b.HasKey("ListId", "StoryId"); b.HasIndex("StoryId"); b.ToTable("reading_list_items", (string)null); }); modelBuilder.Entity("ChapterX.Domain.Entities.RegularUser", b => { b.Property("Id") .HasColumnType("integer") .HasColumnName("user_id"); b.Property("JoinedAt") .HasColumnType("timestamp with time zone") .HasColumnName("joined_at"); b.HasKey("Id"); b.ToTable("regular_user", (string)null); }); modelBuilder.Entity("ChapterX.Domain.Entities.Story", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("story_id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Content") .IsRequired() .HasColumnType("text") .HasColumnName("story_content"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasColumnName("story_created_at"); b.Property("Image") .HasColumnType("text") .HasColumnName("image"); b.Property("MatureContent") .HasColumnType("boolean") .HasColumnName("mature_content"); b.Property("ShortDescription") .IsRequired() .HasColumnType("text") .HasColumnName("short_description"); b.Property("Status") .IsRequired() .HasColumnType("text") .HasColumnName("status"); b.Property("Title") .IsRequired() .HasColumnType("text") .HasColumnName("title"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasColumnName("story_updated_at"); b.Property("UserId") .HasColumnType("integer") .HasColumnName("user_id"); b.HasKey("Id"); b.HasIndex("UserId"); b.ToTable("story", (string)null); }); modelBuilder.Entity("ChapterX.Domain.Entities.User", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("user_id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasColumnName("user_created_at"); b.Property("Email") .IsRequired() .HasColumnType("text") .HasColumnName("email"); b.Property("Name") .IsRequired() .HasColumnType("text") .HasColumnName("user_name"); b.Property("Password") .IsRequired() .HasColumnType("text") .HasColumnName("password"); b.Property("Surname") .IsRequired() .HasColumnType("text") .HasColumnName("surname"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasColumnName("user_updated_at"); b.Property("Username") .IsRequired() .HasColumnType("text") .HasColumnName("username"); b.HasKey("Id"); b.ToTable("users", (string)null); }); modelBuilder.Entity("ChapterX.Domain.Entities.Writer", b => { b.Property("Id") .HasColumnType("integer") .HasColumnName("user_id"); b.Property("Bio") .HasColumnType("text") .HasColumnName("bio"); b.HasKey("Id"); b.ToTable("writer", (string)null); }); modelBuilder.Entity("ChapterX.Domain.Entities.AISuggestion", b => { b.HasOne("ChapterX.Domain.Entities.Story", "Story") .WithMany("AISuggestions") .HasForeignKey("StoryId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Story"); }); modelBuilder.Entity("ChapterX.Domain.Entities.Admin", b => { b.HasOne("ChapterX.Domain.Entities.User", "User") .WithOne("Admin") .HasForeignKey("ChapterX.Domain.Entities.Admin", "Id") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("User"); }); modelBuilder.Entity("ChapterX.Domain.Entities.Chapter", b => { b.HasOne("ChapterX.Domain.Entities.Story", "Story") .WithMany("Chapters") .HasForeignKey("StoryId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Story"); }); modelBuilder.Entity("ChapterX.Domain.Entities.Collaboration", b => { b.HasOne("ChapterX.Domain.Entities.Story", "Story") .WithMany("Collaborations") .HasForeignKey("StoryId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("ChapterX.Domain.Entities.User", "User") .WithMany("Collaborations") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Story"); b.Navigation("User"); }); modelBuilder.Entity("ChapterX.Domain.Entities.Comment", b => { b.HasOne("ChapterX.Domain.Entities.Story", "Story") .WithMany("Comments") .HasForeignKey("StoryId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("ChapterX.Domain.Entities.User", "User") .WithMany("Comments") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Story"); b.Navigation("User"); }); modelBuilder.Entity("ChapterX.Domain.Entities.HasGenre", b => { b.HasOne("ChapterX.Domain.Entities.Genre", "Genre") .WithMany("HasGenres") .HasForeignKey("GenreId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("ChapterX.Domain.Entities.Story", "Story") .WithMany("HasGenres") .HasForeignKey("StoryId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Genre"); b.Navigation("Story"); }); modelBuilder.Entity("ChapterX.Domain.Entities.Likes", b => { b.HasOne("ChapterX.Domain.Entities.Story", "Story") .WithMany("Likes") .HasForeignKey("StoryId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("ChapterX.Domain.Entities.User", "User") .WithMany("Likes") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Story"); b.Navigation("User"); }); modelBuilder.Entity("ChapterX.Domain.Entities.NeedApproval", b => { b.HasOne("ChapterX.Domain.Entities.Chapter", "Chapter") .WithMany("NeedApprovals") .HasForeignKey("ChapterId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("ChapterX.Domain.Entities.Story", "Story") .WithMany("NeedApprovals") .HasForeignKey("StoryId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("ChapterX.Domain.Entities.AISuggestion", "AISuggestion") .WithMany("NeedApprovals") .HasForeignKey("SuggestionId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("AISuggestion"); b.Navigation("Chapter"); b.Navigation("Story"); }); modelBuilder.Entity("ChapterX.Domain.Entities.Notification", b => { b.HasOne("ChapterX.Domain.Entities.Story", "Story") .WithMany("Notifications") .HasForeignKey("StoryId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("ChapterX.Domain.Entities.User", "User") .WithMany("Notifications") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Story"); b.Navigation("User"); }); modelBuilder.Entity("ChapterX.Domain.Entities.ReadingList", b => { b.HasOne("ChapterX.Domain.Entities.User", "User") .WithMany("ReadingLists") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("User"); }); modelBuilder.Entity("ChapterX.Domain.Entities.ReadingListItems", b => { b.HasOne("ChapterX.Domain.Entities.ReadingList", "ReadingList") .WithMany("ReadingListItems") .HasForeignKey("ListId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("ChapterX.Domain.Entities.Story", "Story") .WithMany("ReadingListItems") .HasForeignKey("StoryId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("ReadingList"); b.Navigation("Story"); }); modelBuilder.Entity("ChapterX.Domain.Entities.RegularUser", b => { b.HasOne("ChapterX.Domain.Entities.User", "User") .WithOne("RegularUser") .HasForeignKey("ChapterX.Domain.Entities.RegularUser", "Id") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("User"); }); modelBuilder.Entity("ChapterX.Domain.Entities.Story", b => { b.HasOne("ChapterX.Domain.Entities.Writer", "Writer") .WithMany("Stories") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Writer"); }); modelBuilder.Entity("ChapterX.Domain.Entities.Writer", b => { b.HasOne("ChapterX.Domain.Entities.User", "User") .WithOne("Writer") .HasForeignKey("ChapterX.Domain.Entities.Writer", "Id") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("User"); }); modelBuilder.Entity("ChapterX.Domain.Entities.AISuggestion", b => { b.Navigation("NeedApprovals"); }); modelBuilder.Entity("ChapterX.Domain.Entities.Chapter", b => { b.Navigation("NeedApprovals"); }); modelBuilder.Entity("ChapterX.Domain.Entities.Genre", b => { b.Navigation("HasGenres"); }); modelBuilder.Entity("ChapterX.Domain.Entities.ReadingList", b => { b.Navigation("ReadingListItems"); }); modelBuilder.Entity("ChapterX.Domain.Entities.Story", b => { b.Navigation("AISuggestions"); b.Navigation("Chapters"); b.Navigation("Collaborations"); b.Navigation("Comments"); b.Navigation("HasGenres"); b.Navigation("Likes"); b.Navigation("NeedApprovals"); b.Navigation("Notifications"); b.Navigation("ReadingListItems"); }); modelBuilder.Entity("ChapterX.Domain.Entities.User", b => { b.Navigation("Admin"); b.Navigation("Collaborations"); b.Navigation("Comments"); b.Navigation("Likes"); b.Navigation("Notifications"); b.Navigation("ReadingLists"); b.Navigation("RegularUser"); b.Navigation("Writer"); }); modelBuilder.Entity("ChapterX.Domain.Entities.Writer", b => { b.Navigation("Stories"); }); #pragma warning restore 612, 618 } } }