Index: ChapterX.Infrastructure/Migrations/20260824172555_InitialCreate.Designer.cs
===================================================================
--- ChapterX.Infrastructure/Migrations/20260824172555_InitialCreate.Designer.cs	(revision e882b92860e1899312f197af1134bb0f33d30d15)
+++ ChapterX.Infrastructure/Migrations/20260824172555_InitialCreate.Designer.cs	(revision e882b92860e1899312f197af1134bb0f33d30d15)
@@ -0,0 +1,829 @@
+﻿// <auto-generated />
+using System;
+using ChapterX.Infrastructure.Data.DataContext;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace ChapterX.Infrastructure.Migrations
+{
+    [DbContext(typeof(ApplicationDbContext))]
+    [Migration("20260824172555_InitialCreate")]
+    partial class InitialCreate
+    {
+        /// <inheritdoc />
+        protected override void BuildTargetModel(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<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("suggestion_id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<bool?>("Accepted")
+                        .HasColumnType("boolean")
+                        .HasColumnName("accepted");
+
+                    b.Property<DateTime?>("AppliedAt")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("applied_at");
+
+                    b.Property<DateTime>("CreatedAt")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("suggestion_created_at");
+
+                    b.Property<string>("OriginalText")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("original_text");
+
+                    b.Property<int>("StoryId")
+                        .HasColumnType("integer")
+                        .HasColumnName("story_id");
+
+                    b.Property<string>("SuggestedText")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("suggested_text");
+
+                    b.Property<string>("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<int>("Id")
+                        .HasColumnType("integer")
+                        .HasColumnName("user_id");
+
+                    b.Property<DateTime>("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<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("chapter_id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Content")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("chapter_content");
+
+                    b.Property<DateTime>("CreatedAt")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("chapter_created_at");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("chapter_name");
+
+                    b.Property<int>("Number")
+                        .HasColumnType("integer")
+                        .HasColumnName("chapter_number");
+
+                    b.Property<DateTime>("PublishedAt")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("published_at");
+
+                    b.Property<decimal?>("Rating")
+                        .HasColumnType("numeric")
+                        .HasColumnName("rating");
+
+                    b.Property<int>("StoryId")
+                        .HasColumnType("integer")
+                        .HasColumnName("story_id");
+
+                    b.Property<string>("Title")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("title");
+
+                    b.Property<DateTime>("UpdatedAt")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("chapter_updated_at");
+
+                    b.Property<int>("ViewCount")
+                        .HasColumnType("integer")
+                        .HasColumnName("view_count");
+
+                    b.Property<int?>("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<int>("UserId")
+                        .HasColumnType("integer")
+                        .HasColumnName("user_id");
+
+                    b.Property<int>("StoryId")
+                        .HasColumnType("integer")
+                        .HasColumnName("story_id");
+
+                    b.Property<DateTime>("CreatedAt")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("collab_created_at");
+
+                    b.Property<int?>("PermissionLevel")
+                        .HasColumnType("integer")
+                        .HasColumnName("permission_level");
+
+                    b.Property<string>("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<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("comment_id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Content")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("comment_content");
+
+                    b.Property<DateTime>("CreatedAt")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("comment_created_at");
+
+                    b.Property<int>("StoryId")
+                        .HasColumnType("integer")
+                        .HasColumnName("story_id");
+
+                    b.Property<DateTime>("UpdatedAt")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("comment_updated_at");
+
+                    b.Property<int>("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<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("genre_id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("genre_name");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("genre", (string)null);
+                });
+
+            modelBuilder.Entity("ChapterX.Domain.Entities.HasGenre", b =>
+                {
+                    b.Property<int>("StoryId")
+                        .HasColumnType("integer")
+                        .HasColumnName("story_id");
+
+                    b.Property<int>("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<int>("UserId")
+                        .HasColumnType("integer")
+                        .HasColumnName("user_id");
+
+                    b.Property<int>("StoryId")
+                        .HasColumnType("integer")
+                        .HasColumnName("story_id");
+
+                    b.Property<DateTime>("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<int>("SuggestionId")
+                        .HasColumnType("integer")
+                        .HasColumnName("suggestion_id");
+
+                    b.Property<int>("StoryId")
+                        .HasColumnType("integer")
+                        .HasColumnName("story_id");
+
+                    b.Property<int>("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<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("notification_id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Content")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("notification_content");
+
+                    b.Property<string>("ContentType")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("content_type");
+
+                    b.Property<DateTime>("CreatedAt")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("notification_created_at");
+
+                    b.Property<bool>("IsRead")
+                        .HasColumnType("boolean")
+                        .HasColumnName("is_read");
+
+                    b.Property<string>("Link")
+                        .HasColumnType("text")
+                        .HasColumnName("link");
+
+                    b.Property<int?>("StoryId")
+                        .HasColumnType("integer")
+                        .HasColumnName("story_id");
+
+                    b.Property<int>("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<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("list_id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Content")
+                        .HasColumnType("text")
+                        .HasColumnName("list_content");
+
+                    b.Property<DateTime>("CreatedAt")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("list_created_at");
+
+                    b.Property<bool>("IsPublic")
+                        .HasColumnType("boolean")
+                        .HasColumnName("is_public");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("list_name");
+
+                    b.Property<DateTime>("UpdatedAt")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("list_updated_at");
+
+                    b.Property<int>("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<int>("ListId")
+                        .HasColumnType("integer")
+                        .HasColumnName("list_id");
+
+                    b.Property<int>("StoryId")
+                        .HasColumnType("integer")
+                        .HasColumnName("story_id");
+
+                    b.Property<DateTime>("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<int>("Id")
+                        .HasColumnType("integer")
+                        .HasColumnName("user_id");
+
+                    b.Property<DateTime>("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<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("story_id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Content")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("story_content");
+
+                    b.Property<DateTime>("CreatedAt")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("story_created_at");
+
+                    b.Property<string>("Image")
+                        .HasColumnType("text")
+                        .HasColumnName("image");
+
+                    b.Property<bool>("MatureContent")
+                        .HasColumnType("boolean")
+                        .HasColumnName("mature_content");
+
+                    b.Property<string>("ShortDescription")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("short_description");
+
+                    b.Property<string>("Status")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("status");
+
+                    b.Property<string>("Title")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("title");
+
+                    b.Property<DateTime>("UpdatedAt")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("story_updated_at");
+
+                    b.Property<int>("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<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("user_id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime>("CreatedAt")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("user_created_at");
+
+                    b.Property<string>("Email")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("email");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("user_name");
+
+                    b.Property<string>("Password")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("password");
+
+                    b.Property<string>("Surname")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("surname");
+
+                    b.Property<DateTime>("UpdatedAt")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("user_updated_at");
+
+                    b.Property<string>("Username")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("username");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("users", (string)null);
+                });
+
+            modelBuilder.Entity("ChapterX.Domain.Entities.Writer", b =>
+                {
+                    b.Property<int>("Id")
+                        .HasColumnType("integer")
+                        .HasColumnName("user_id");
+
+                    b.Property<string>("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
+        }
+    }
+}
