//
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
}
}
}