Index: ChapterX.Infrastructure/Data/DataContext/ApplicationDbContext.cs
===================================================================
--- ChapterX.Infrastructure/Data/DataContext/ApplicationDbContext.cs	(revision e882b92860e1899312f197af1134bb0f33d30d15)
+++ ChapterX.Infrastructure/Data/DataContext/ApplicationDbContext.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
@@ -2,5 +2,4 @@
 using ChapterX.Domain.Entities;
 using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Storage;
 
 namespace ChapterX.Infrastructure.Data.DataContext
@@ -19,4 +18,5 @@
         public DbSet<Likes> Likes { get; init; }
         public DbSet<Collaboration> Collaborations { get; init; }
+        public DbSet<Notify> Notifies { get; init; }
         public DbSet<AISuggestion> AISuggestions { get; init; }
         public DbSet<Admin> Admins { get; init; }
@@ -25,7 +25,9 @@
         public DbSet<HasGenre> HasGenres { get; init; }
         public DbSet<NeedApproval> NeedApprovals { get; init; }
-
-        public Task<IDbContextTransaction> BeginTransactionAsync(CancellationToken cancellationToken = default)
-            => Database.BeginTransactionAsync(cancellationToken);
+        public DbSet<Status> Statuses { get; init; }
+        public DbSet<ContentType> ContentTypes { get; init; }
+        public DbSet<SuggestionType> SuggestionTypes { get; init; }
+        public DbSet<Roles> Roles { get; init; }
+        public DbSet<PermissionLevel> PermissionLevels { get; init; }
 
         protected override void OnModelCreating(ModelBuilder modelBuilder)
@@ -41,9 +43,9 @@
                 e.Property(x => x.Username).HasColumnName("username");
                 e.Property(x => x.Email).HasColumnName("email");
-                e.Property(x => x.Name).HasColumnName("user_name");
+                e.Property(x => x.Name).HasColumnName("name");
                 e.Property(x => x.Surname).HasColumnName("surname");
                 e.Property(x => x.Password).HasColumnName("password");
-                e.Property(x => x.CreatedAt).HasColumnName("user_created_at");
-                e.Property(x => x.UpdatedAt).HasColumnName("user_updated_at");
+                e.Property(x => x.CreatedAt).HasColumnName("created_at");
+                e.Property(x => x.UpdatedAt).HasColumnName("updated_at");
             });
 
@@ -54,5 +56,4 @@
                 e.HasKey(x => x.Id);
                 e.Property(x => x.Id).HasColumnName("user_id");
-                e.Property(x => x.AssignedAt).HasColumnName("assigned_at");
                 e.HasOne(x => x.User).WithOne(u => u.Admin).HasForeignKey<Admin>(x => x.Id);
             });
@@ -64,5 +65,4 @@
                 e.HasKey(x => x.Id);
                 e.Property(x => x.Id).HasColumnName("user_id");
-                e.Property(x => x.JoinedAt).HasColumnName("joined_at");
                 e.HasOne(x => x.User).WithOne(u => u.RegularUser).HasForeignKey<RegularUser>(x => x.Id);
             });
@@ -74,5 +74,4 @@
                 e.HasKey(x => x.Id);
                 e.Property(x => x.Id).HasColumnName("user_id");
-                e.Property(x => x.Bio).HasColumnName("bio");
                 e.HasOne(x => x.User).WithOne(u => u.Writer).HasForeignKey<Writer>(x => x.Id);
             });
@@ -85,13 +84,22 @@
                 e.Property(x => x.Id).HasColumnName("story_id");
                 e.Property(x => x.MatureContent).HasColumnName("mature_content");
-                e.Property(x => x.Title).HasColumnName("title");
                 e.Property(x => x.ShortDescription).HasColumnName("short_description");
                 e.Property(x => x.Image).HasColumnName("image");
-                e.Property(x => x.Content).HasColumnName("story_content");
-                e.Property(x => x.Status).HasColumnName("status");
-                e.Property(x => x.UserId).HasColumnName("user_id");
-                e.Property(x => x.CreatedAt).HasColumnName("story_created_at");
-                e.Property(x => x.UpdatedAt).HasColumnName("story_updated_at");
+                e.Property(x => x.Content).HasColumnName("content");
+                e.Property(x => x.UserId).HasColumnName("user_id");
+                e.Property(x => x.CreatedAt).HasColumnName("created_at");
+                e.Property(x => x.UpdatedAt).HasColumnName("updated_at");
                 e.HasOne(x => x.Writer).WithMany(w => w.Stories).HasForeignKey(x => x.UserId);
+            });
+
+            // STATUS
+            modelBuilder.Entity<Status>(e =>
+            {
+                e.ToTable("status");
+                e.HasKey(x => new { x.StoryId, x.StatusValue });
+                e.Ignore(x => x.Id);
+                e.Property(x => x.StoryId).HasColumnName("story_id");
+                e.Property(x => x.StatusValue).HasColumnName("status");
+                e.HasOne(x => x.Story).WithMany(s => s.Statuses).HasForeignKey(x => x.StoryId);
             });
 
@@ -105,5 +113,5 @@
                 e.Property(x => x.Name).HasColumnName("chapter_name");
                 e.Property(x => x.Title).HasColumnName("title");
-                e.Property(x => x.Content).HasColumnName("chapter_content");
+                e.Property(x => x.Content).HasColumnName("content");
                 e.Property(x => x.WordCount).HasColumnName("word_count");
                 e.Property(x => x.Rating).HasColumnName("rating");
@@ -111,6 +119,6 @@
                 e.Property(x => x.ViewCount).HasColumnName("view_count");
                 e.Property(x => x.StoryId).HasColumnName("story_id");
-                e.Property(x => x.CreatedAt).HasColumnName("chapter_created_at");
-                e.Property(x => x.UpdatedAt).HasColumnName("chapter_updated_at");
+                e.Property(x => x.CreatedAt).HasColumnName("created_at");
+                e.Property(x => x.UpdatedAt).HasColumnName("updated_at");
                 e.HasOne(x => x.Story).WithMany(s => s.Chapters).HasForeignKey(x => x.StoryId);
             });
@@ -122,5 +130,5 @@
                 e.HasKey(x => x.Id);
                 e.Property(x => x.Id).HasColumnName("genre_id");
-                e.Property(x => x.Name).HasColumnName("genre_name");
+                e.Property(x => x.Name).HasColumnName("name");
             });
 
@@ -145,5 +153,5 @@
                 e.Property(x => x.UserId).HasColumnName("user_id");
                 e.Property(x => x.StoryId).HasColumnName("story_id");
-                e.Property(x => x.LikedAt).HasColumnName("liked_at");
+                e.Property(x => x.CreatedAt).HasColumnName("created_at");
                 e.HasOne(x => x.User).WithMany(u => u.Likes).HasForeignKey(x => x.UserId);
                 e.HasOne(x => x.Story).WithMany(s => s.Likes).HasForeignKey(x => x.StoryId);
@@ -156,9 +164,9 @@
                 e.HasKey(x => x.Id);
                 e.Property(x => x.Id).HasColumnName("comment_id");
-                e.Property(x => x.Content).HasColumnName("comment_content");
-                e.Property(x => x.UserId).HasColumnName("user_id");
-                e.Property(x => x.StoryId).HasColumnName("story_id");
-                e.Property(x => x.CreatedAt).HasColumnName("comment_created_at");
-                e.Property(x => x.UpdatedAt).HasColumnName("comment_updated_at");
+                e.Property(x => x.Content).HasColumnName("content");
+                e.Property(x => x.UserId).HasColumnName("user_id");
+                e.Property(x => x.StoryId).HasColumnName("story_id");
+                e.Property(x => x.CreatedAt).HasColumnName("created_at");
+                e.Property(x => x.UpdatedAt).HasColumnName("updated_at");
                 e.HasOne(x => x.User).WithMany(u => u.Comments).HasForeignKey(x => x.UserId);
                 e.HasOne(x => x.Story).WithMany(s => s.Comments).HasForeignKey(x => x.StoryId);
@@ -171,10 +179,10 @@
                 e.HasKey(x => x.Id);
                 e.Property(x => x.Id).HasColumnName("list_id");
-                e.Property(x => x.Name).HasColumnName("list_name");
-                e.Property(x => x.Content).HasColumnName("list_content");
+                e.Property(x => x.Name).HasColumnName("name");
+                e.Property(x => x.Content).HasColumnName("content");
                 e.Property(x => x.IsPublic).HasColumnName("is_public");
                 e.Property(x => x.UserId).HasColumnName("user_id");
-                e.Property(x => x.CreatedAt).HasColumnName("list_created_at");
-                e.Property(x => x.UpdatedAt).HasColumnName("list_updated_at");
+                e.Property(x => x.CreatedAt).HasColumnName("created_at");
+                e.Property(x => x.UpdatedAt).HasColumnName("updated_at");
                 e.HasOne(x => x.User).WithMany(u => u.ReadingLists).HasForeignKey(x => x.UserId);
             });
@@ -199,14 +207,32 @@
                 e.HasKey(x => x.Id);
                 e.Property(x => x.Id).HasColumnName("notification_id");
-                e.Property(x => x.Content).HasColumnName("notification_content");
-                e.Property(x => x.ContentType).HasColumnName("content_type");
+                e.Property(x => x.Content).HasColumnName("content");
                 e.Property(x => x.IsRead).HasColumnName("is_read");
-                e.Property(x => x.Link).HasColumnName("link");
-                e.Property(x => x.UserId).HasColumnName("user_id");
-                e.Property(x => x.StoryId).HasColumnName("story_id");
-                e.Property(x => x.CreatedAt).HasColumnName("notification_created_at");
-                e.HasOne(x => x.User).WithMany(u => u.Notifications).HasForeignKey(x => x.UserId);
-                e.HasOne(x => x.Story).WithMany(s => s.Notifications).HasForeignKey(x => x.StoryId)
-                    .IsRequired(false).OnDelete(DeleteBehavior.SetNull);
+                e.Property(x => x.CreatedAt).HasColumnName("created_at");
+            });
+
+            // CONTENT_TYPE
+            modelBuilder.Entity<ContentType>(e =>
+            {
+                e.ToTable("content_type");
+                e.HasKey(x => new { x.NotificationId, x.ContentTypeValue });
+                e.Ignore(x => x.Id);
+                e.Property(x => x.NotificationId).HasColumnName("notification_id");
+                e.Property(x => x.ContentTypeValue).HasColumnName("content_type");
+                e.HasOne(x => x.Notification).WithMany(n => n.ContentTypes).HasForeignKey(x => x.NotificationId);
+            });
+
+            // NOTIFY
+            modelBuilder.Entity<Notify>(e =>
+            {
+                e.ToTable("notify");
+                e.HasKey(x => new { x.UserId, x.StoryId, x.NotificationId });
+                e.Ignore(x => x.Id);
+                e.Property(x => x.UserId).HasColumnName("user_id");
+                e.Property(x => x.StoryId).HasColumnName("story_id");
+                e.Property(x => x.NotificationId).HasColumnName("notification_id");
+                e.HasOne(x => x.User).WithMany(u => u.Notifies).HasForeignKey(x => x.UserId);
+                e.HasOne(x => x.Story).WithMany(s => s.Notifies).HasForeignKey(x => x.StoryId);
+                e.HasOne(x => x.Notification).WithMany(n => n.Notifies).HasForeignKey(x => x.NotificationId);
             });
 
@@ -219,10 +245,20 @@
                 e.Property(x => x.OriginalText).HasColumnName("original_text");
                 e.Property(x => x.SuggestedText).HasColumnName("suggested_text");
-                e.Property(x => x.SuggestionType).HasColumnName("suggestion_type");
                 e.Property(x => x.Accepted).HasColumnName("accepted");
-                e.Property(x => x.CreatedAt).HasColumnName("suggestion_created_at");
+                e.Property(x => x.CreatedAt).HasColumnName("created_at");
                 e.Property(x => x.AppliedAt).HasColumnName("applied_at");
                 e.Property(x => x.StoryId).HasColumnName("story_id");
                 e.HasOne(x => x.Story).WithMany(s => s.AISuggestions).HasForeignKey(x => x.StoryId);
+            });
+
+            // SUGGESTION_TYPE
+            modelBuilder.Entity<SuggestionType>(e =>
+            {
+                e.ToTable("suggestion_type");
+                e.HasKey(x => new { x.SuggestionId, x.SuggestionTypeValue });
+                e.Ignore(x => x.Id);
+                e.Property(x => x.SuggestionId).HasColumnName("suggestion_id");
+                e.Property(x => x.SuggestionTypeValue).HasColumnName("suggestion_type");
+                e.HasOne(x => x.AISuggestion).WithMany(a => a.SuggestionTypes).HasForeignKey(x => x.SuggestionId);
             });
 
@@ -249,9 +285,29 @@
                 e.Property(x => x.UserId).HasColumnName("user_id");
                 e.Property(x => x.StoryId).HasColumnName("story_id");
-                e.Property(x => x.Role).HasColumnName("role");
-                e.Property(x => x.PermissionLevel).HasColumnName("permission_level");
-                e.Property(x => x.CreatedAt).HasColumnName("collab_created_at");
+                e.Property(x => x.CreatedAt).HasColumnName("created_at");
                 e.HasOne(x => x.User).WithMany(u => u.Collaborations).HasForeignKey(x => x.UserId);
                 e.HasOne(x => x.Story).WithMany(s => s.Collaborations).HasForeignKey(x => x.StoryId);
+            });
+
+            // ROLES
+            modelBuilder.Entity<Roles>(e =>
+            {
+                e.ToTable("roles");
+                e.HasKey(x => new { x.UserId, x.StoryId, x.RoleValue });
+                e.Ignore(x => x.Id);
+                e.Property(x => x.UserId).HasColumnName("user_id");
+                e.Property(x => x.StoryId).HasColumnName("story_id");
+                e.Property(x => x.RoleValue).HasColumnName("roles");
+            });
+
+            // PERMISSION_LEVEL
+            modelBuilder.Entity<PermissionLevel>(e =>
+            {
+                e.ToTable("permission_level");
+                e.HasKey(x => new { x.UserId, x.StoryId, x.Level });
+                e.Ignore(x => x.Id);
+                e.Property(x => x.UserId).HasColumnName("user_id");
+                e.Property(x => x.StoryId).HasColumnName("story_id");
+                e.Property(x => x.Level).HasColumnName("permission_level");
             });
         }
