//
using System;
using Infrastructure.Persistence;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace Infrastructure.Migrations.AppDb
{
[DbContext(typeof(AppDbContext))]
[Migration("20260313180453_AddRssNewsTables")]
partial class AddRssNewsTables
{
///
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "10.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("Domain.Entities.Common.Config", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("LastUpdatedAt")
.HasColumnType("datetime2")
.HasComment("마지막 수정일시");
b.Property("RowVersion")
.IsConcurrencyToken()
.IsRequired()
.ValueGeneratedOnAddOrUpdate()
.HasColumnType("rowversion")
.HasComment("동시성 제어용");
b.HasKey("ID");
b.ToTable("Config", null, t =>
{
t.HasComment("운영 정보 설정 값");
});
});
modelBuilder.Entity("Domain.Entities.Crypto.Coin", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("ContractAddress")
.HasMaxLength(100)
.HasColumnType("nvarchar(100)")
.HasComment("컨트랙트 주소");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("Description")
.HasColumnType("nvarchar(max)")
.HasComment("설명");
b.Property("DisplayOrder")
.HasColumnType("smallint")
.HasComment("메인 노출 순서");
b.Property("EngName")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)")
.HasComment("영문 이름");
b.Property("IsActive")
.HasColumnType("bit")
.HasComment("사용 여부");
b.Property("IsDelisted")
.HasColumnType("bit")
.HasComment("상장 폐지");
b.Property("IsFeatured")
.HasColumnType("bit")
.HasComment("주요 코인 (메인 노출)");
b.Property("IsNew")
.HasColumnType("bit")
.HasComment("신규 상장");
b.Property("IsWarning")
.HasColumnType("bit")
.HasComment("위험 경고");
b.Property("KorName")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)")
.HasComment("한글 이름");
b.Property("LogoImage")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)")
.HasComment("로고 이미지");
b.Property("Symbol")
.IsRequired()
.HasMaxLength(30)
.HasColumnType("nvarchar(30)")
.HasComment("심볼 (BTC, ETH 등)");
b.Property("TelegramUrl")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)")
.HasComment("텔레그램 URL");
b.Property("TwitterUrl")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)")
.HasComment("트위터 URL");
b.Property("UpdatedAt")
.HasColumnType("datetime2")
.HasComment("수정 일시");
b.Property("WebsiteUrl")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)")
.HasComment("홈페이지 URL");
b.Property("WhitepaperUrl")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)")
.HasComment("백서 URL");
b.HasKey("ID");
b.HasIndex("DisplayOrder")
.HasDatabaseName("IX_Coin_DisplayOrder");
b.HasIndex("IsActive");
b.HasIndex("IsDelisted");
b.HasIndex("IsFeatured")
.HasDatabaseName("IX_Coin_IsFeatured");
b.HasIndex("IsNew");
b.HasIndex("IsWarning");
b.HasIndex("Symbol")
.IsUnique();
b.HasIndex("Symbol", "IsActive");
b.ToTable("Coin", null, t =>
{
t.HasComment("코인/토큰");
});
});
modelBuilder.Entity("Domain.Entities.Crypto.CoinCategory", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("Code")
.IsRequired()
.HasMaxLength(30)
.HasColumnType("nvarchar(30)")
.HasComment("카테고리 코드");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("IsActive")
.HasColumnType("bit")
.HasComment("사용 여부");
b.Property("Name")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)")
.HasComment("카테고리 이름");
b.Property("Order")
.HasColumnType("smallint")
.HasComment("순서");
b.Property("UpdatedAt")
.HasColumnType("datetime2")
.HasComment("수정 일시");
b.HasKey("ID");
b.HasIndex("Code")
.IsUnique();
b.HasIndex("IsActive");
b.HasIndex("Order");
b.ToTable("CoinCategory", null, t =>
{
t.HasComment("코인 카테고리");
});
});
modelBuilder.Entity("Domain.Entities.Crypto.CoinCategoryMap", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("CategoryID")
.HasColumnType("int")
.HasComment("카테고리 ID");
b.Property("CoinID")
.HasColumnType("int")
.HasComment("코인 ID");
b.HasKey("ID");
b.HasIndex("CategoryID");
b.HasIndex("CoinID", "CategoryID")
.IsUnique();
b.ToTable("CoinCategoryMap", null, t =>
{
t.HasComment("코인-카테고리 연결");
});
});
modelBuilder.Entity("Domain.Entities.Crypto.CoinMarket", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("CoinID")
.HasColumnType("int")
.HasComment("코인 ID");
b.Property("Market")
.IsRequired()
.HasMaxLength(30)
.HasColumnType("nvarchar(30)")
.HasComment("거래쌍 (KRW-BTC 등)");
b.HasKey("ID");
b.HasIndex("Market");
b.HasIndex("CoinID", "Market")
.IsUnique();
b.ToTable("CoinMarket", null, t =>
{
t.HasComment("코인-거래쌍 연결");
});
});
modelBuilder.Entity("Domain.Entities.Director.AdminAccessLog", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("생성 일시");
b.Property("ElapsedMs")
.HasColumnType("bigint")
.HasComment("처리 시간 (밀리초)");
b.Property("IpAddress")
.HasMaxLength(45)
.HasColumnType("nvarchar(45)")
.HasComment("IP 주소");
b.Property("MenuName")
.HasMaxLength(200)
.HasColumnType("nvarchar(200)")
.HasComment("메뉴 이름");
b.Property("Method")
.IsRequired()
.HasMaxLength(10)
.HasColumnType("nvarchar(10)")
.HasComment("HTTP Method");
b.Property("Path")
.IsRequired()
.HasMaxLength(2048)
.HasColumnType("nvarchar(2048)")
.HasComment("요청 경로");
b.Property("QueryString")
.HasMaxLength(2048)
.HasColumnType("nvarchar(2048)")
.HasComment("쿼리 스트링");
b.Property("StatusCode")
.HasColumnType("int")
.HasComment("응답 상태 코드");
b.Property("UserAgent")
.HasMaxLength(512)
.HasColumnType("nvarchar(512)")
.HasComment("User Agent");
b.Property("UserID")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasComment("관리자 사용자 ID");
b.Property("UserName")
.HasMaxLength(100)
.HasColumnType("nvarchar(100)")
.HasComment("관리자 사용자 이름");
b.HasKey("ID");
b.HasIndex("CreatedAt");
b.HasIndex("UserID");
b.ToTable("AdminAccessLog", null, t =>
{
t.HasComment("관리자 접근 기록");
});
});
modelBuilder.Entity("Domain.Entities.Director.AdminLoginLog", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("Account")
.IsRequired()
.HasMaxLength(120)
.HasColumnType("nvarchar(120)")
.HasComment("로그인 시도 계정");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("생성 일시");
b.Property("IpAddress")
.HasMaxLength(45)
.HasColumnType("nvarchar(45)")
.HasComment("IP 주소");
b.Property("Reason")
.HasMaxLength(225)
.HasColumnType("nvarchar(225)")
.HasComment("실패 사유");
b.Property("Success")
.HasColumnType("bit")
.HasComment("로그인 성공 여부");
b.Property("UserAgent")
.HasMaxLength(512)
.HasColumnType("nvarchar(512)")
.HasComment("User Agent");
b.HasKey("ID");
b.HasIndex("Account");
b.HasIndex("CreatedAt");
b.ToTable("AdminLoginLog", null, t =>
{
t.HasComment("관리자 로그인 기록");
});
});
modelBuilder.Entity("Domain.Entities.EmailVerification.EmailVerifyNumber", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("Code")
.IsRequired()
.HasMaxLength(10)
.HasColumnType("nvarchar(10)")
.HasComment("Code");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("Email")
.IsRequired()
.HasMaxLength(60)
.HasColumnType("nvarchar(60)")
.HasComment("이메일");
b.Property("Expiration")
.HasColumnType("datetime2")
.HasComment("만료 일시");
b.Property("IsVerified")
.HasColumnType("bit")
.HasComment("인증 여부");
b.Property("Type")
.HasColumnType("int")
.HasComment("인증 유형 (이메일 인증 / 비밀번호 재설정)");
b.HasKey("ID");
b.HasIndex("Code");
b.HasIndex("Email");
b.HasIndex("Expiration");
b.HasIndex("IsVerified");
b.HasIndex("Type");
b.HasIndex("Type", "Code");
b.HasIndex("Type", "Code", "IsVerified");
b.ToTable("EmailVerifyNumber", null, t =>
{
t.HasComment("이메일 인증 번호들");
});
});
modelBuilder.Entity("Domain.Entities.EmailVerification.EmailVerifyToken", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("Additional")
.HasColumnType("nvarchar(max)")
.HasComment("추가 정보(JSON)");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("Email")
.IsRequired()
.HasMaxLength(60)
.HasColumnType("nvarchar(60)")
.HasComment("이메일");
b.Property("Expiration")
.HasColumnType("datetime2")
.HasComment("만료 일시");
b.Property("IsVerified")
.HasColumnType("bit")
.HasComment("인증 여부");
b.Property("Token")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("nvarchar(256)")
.HasComment("Token");
b.Property("Type")
.HasColumnType("int")
.HasComment("인증 유형 (이메일 인증 / 비밀번호 재설정)");
b.HasKey("ID");
b.HasIndex("Email");
b.HasIndex("Expiration");
b.HasIndex("IsVerified");
b.HasIndex("Token");
b.HasIndex("Type");
b.HasIndex("Type", "Email", "Token");
b.HasIndex("Type", "Email", "Token", "IsVerified");
b.ToTable("EmailVerifyToken", null, t =>
{
t.HasComment("이메일 인증 토큰들");
});
});
modelBuilder.Entity("Domain.Entities.Forum.Boards.Board", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("BoardGroupID")
.HasColumnType("int")
.HasComment("분류 ID");
b.Property("Code")
.IsRequired()
.HasMaxLength(30)
.HasColumnType("nvarchar(30)")
.HasComment("게시판 주소");
b.Property("CoinID")
.HasColumnType("int");
b.Property("Comments")
.HasColumnType("int")
.HasComment("댓글 수");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("IsActive")
.HasColumnType("bit")
.HasComment("사용 여부");
b.Property("IsSearch")
.HasColumnType("bit")
.HasComment("검색 여부");
b.Property("Name")
.IsRequired()
.HasMaxLength(70)
.HasColumnType("nvarchar(70)")
.HasComment("게시판 이름");
b.Property("Order")
.HasColumnType("smallint")
.HasComment("순서");
b.Property("Posts")
.HasColumnType("int")
.HasComment("게시글 수");
b.Property("UpdatedAt")
.HasColumnType("datetime2")
.HasComment("수정 일시");
b.HasKey("ID");
b.HasIndex("BoardGroupID");
b.HasIndex("Code")
.IsUnique();
b.HasIndex("CoinID");
b.HasIndex("Comments");
b.HasIndex("IsActive");
b.HasIndex("IsSearch");
b.HasIndex("Name");
b.HasIndex("Order");
b.HasIndex("Posts");
b.HasIndex("Code", "IsActive");
b.HasIndex("Code", "IsSearch");
b.HasIndex("IsSearch", "IsActive");
b.ToTable("Board", null, t =>
{
t.HasComment("게시판");
});
});
modelBuilder.Entity("Domain.Entities.Forum.Boards.BoardGroup", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("Boards")
.HasColumnType("smallint")
.HasComment("게시판 수");
b.Property("Code")
.IsRequired()
.HasMaxLength(30)
.HasColumnType("nvarchar(30)")
.HasComment("게시판 분류 주소");
b.Property("Comments")
.HasColumnType("int")
.HasComment("댓글 수");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("Name")
.IsRequired()
.HasMaxLength(70)
.HasColumnType("nvarchar(70)")
.HasComment("게시판 분류 명");
b.Property("Order")
.HasColumnType("smallint")
.HasComment("순서");
b.Property("Posts")
.HasColumnType("int")
.HasComment("게시글 수");
b.Property("UpdatedAt")
.HasColumnType("datetime2")
.HasComment("수정 일시");
b.HasKey("ID");
b.HasIndex("Code")
.IsUnique();
b.HasIndex("Order");
b.HasIndex("Order", "CreatedAt");
b.HasIndex("Code", "Order", "CreatedAt");
b.ToTable("BoardGroup", null, t =>
{
t.HasComment("게시판 분류");
});
});
modelBuilder.Entity("Domain.Entities.Forum.Boards.BoardManager", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("BoardID")
.HasColumnType("int")
.HasComment("게시판 ID");
b.Property("CanDelete")
.HasColumnType("bit")
.HasComment("삭제 권한");
b.Property("CanEdit")
.HasColumnType("bit")
.HasComment("수정 권한");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("MemberID")
.HasColumnType("int")
.HasComment("관리자 ID");
b.Property("UpdatedAt")
.HasColumnType("datetime2")
.HasComment("수정 일시");
b.HasKey("ID");
b.HasIndex("BoardID");
b.HasIndex("MemberID");
b.HasIndex("BoardID", "MemberID");
b.ToTable("BoardManager", null, t =>
{
t.HasComment("게시판 관리자");
});
});
modelBuilder.Entity("Domain.Entities.Forum.Boards.BoardMeta", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("BoardID")
.HasColumnType("int")
.HasComment("게시판 ID");
b.HasKey("ID");
b.HasIndex("BoardID")
.IsUnique();
b.ToTable("BoardMeta", null, t =>
{
t.HasComment("게시판 설정");
});
});
modelBuilder.Entity("Domain.Entities.Forum.Boards.BoardPrefix", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("BoardID")
.HasColumnType("int")
.HasComment("게시판 ID");
b.Property("Color")
.HasMaxLength(10)
.HasColumnType("nvarchar(10)")
.HasComment("색상");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("IsActive")
.HasColumnType("bit")
.HasComment("사용 여부");
b.Property("Name")
.IsRequired()
.HasMaxLength(20)
.HasColumnType("nvarchar(20)")
.HasComment("말머리");
b.Property("Order")
.HasColumnType("smallint")
.HasComment("정렬 순서");
b.Property("Posts")
.HasColumnType("int")
.HasComment("사용 게시글 수");
b.Property("UpdatedAt")
.HasColumnType("datetime2")
.HasComment("수정 일시");
b.HasKey("ID");
b.HasIndex("BoardID", "IsActive", "Order", "CreatedAt");
b.ToTable("BoardPrefix", null, t =>
{
t.HasComment("게시판 말머리");
});
});
modelBuilder.Entity("Domain.Entities.Forum.Comments.Comment", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("BoardID")
.HasColumnType("int")
.HasComment("게시판 ID");
b.Property("Content")
.IsRequired()
.HasMaxLength(4000)
.HasColumnType("nvarchar(4000)")
.HasComment("댓글 내용");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("DeletedAt")
.HasColumnType("datetime2");
b.Property("Depth")
.HasColumnType("smallint")
.HasComment("댓글 깊이");
b.Property("Dislikes")
.HasColumnType("int");
b.Property("Email")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("Files")
.HasColumnType("tinyint");
b.Property("Images")
.HasColumnType("int");
b.Property("IpAddress")
.HasColumnType("nvarchar(max)");
b.Property("IsDeleted")
.HasColumnType("bit")
.HasComment("삭제 여부");
b.Property("IsReply")
.HasColumnType("bit");
b.Property("IsSecret")
.HasColumnType("bit");
b.Property("Likes")
.HasColumnType("int");
b.Property("Medias")
.HasColumnType("tinyint");
b.Property("MemberID")
.HasColumnType("int")
.HasComment("회원 ID");
b.Property("MentionMemberID")
.HasColumnType("int")
.HasComment("언급 대상 회원 ID");
b.Property("Name")
.HasColumnType("nvarchar(max)");
b.Property("ParentID")
.HasColumnType("int")
.HasComment("부모 댓글 ID");
b.Property("PostID")
.HasColumnType("int")
.HasComment("게시글 ID");
b.Property("Replies")
.HasColumnType("int");
b.Property("Reports")
.HasColumnType("int");
b.Property("SID")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("Score")
.HasColumnType("int")
.HasComment("점수");
b.Property("Status")
.HasColumnType("tinyint")
.HasComment("댓글 상태");
b.Property("UpdatedAt")
.HasColumnType("datetime2");
b.Property("UserAgent")
.HasColumnType("nvarchar(max)");
b.HasKey("ID");
b.HasIndex("BoardID");
b.HasIndex("MemberID");
b.HasIndex("MentionMemberID");
b.HasIndex("ParentID");
b.HasIndex("PostID");
b.HasIndex("PostID", "IsDeleted", "ParentID", "CreatedAt")
.IsDescending(false, false, false, true);
b.HasIndex("PostID", "IsDeleted", "ParentID", "Score", "ID")
.IsDescending(false, false, false, true, true);
b.HasIndex("PostID", "MemberID", "IsDeleted", "ParentID", "CreatedAt")
.IsDescending(false, false, false, false, true);
b.HasIndex("PostID", "MemberID", "IsDeleted", "ParentID", "Score", "ID")
.IsDescending(false, false, false, false, true, true);
b.ToTable("Comment", null, t =>
{
t.HasComment("댓글");
});
});
modelBuilder.Entity("Domain.Entities.Forum.Comments.CommentFile", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("BoardID")
.HasColumnType("int");
b.Property("CommentID")
.HasColumnType("int");
b.Property("ContentType")
.HasColumnType("nvarchar(max)");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("DisabledAt")
.HasColumnType("datetime2");
b.Property("Downloads")
.HasColumnType("int");
b.Property("Extension")
.HasColumnType("nvarchar(max)");
b.Property("FileName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("HashedName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("IsDisabled")
.HasColumnType("bit");
b.Property("Path")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("PostID")
.HasColumnType("int");
b.Property("Size")
.HasColumnType("bigint");
b.Property("UUID")
.HasColumnType("uniqueidentifier");
b.Property("Url")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("ID");
b.HasIndex("BoardID");
b.HasIndex("CommentID");
b.HasIndex("PostID");
b.HasIndex("UUID")
.IsUnique();
b.ToTable("CommentFile", null, t =>
{
t.HasComment("댓글 파일");
});
});
modelBuilder.Entity("Domain.Entities.Forum.Comments.CommentImage", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("BoardID")
.HasColumnType("int");
b.Property("CommentID")
.HasColumnType("int");
b.Property("ContentType")
.HasColumnType("nvarchar(max)");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("DisabledAt")
.HasColumnType("datetime2");
b.Property("Extension")
.HasColumnType("nvarchar(max)");
b.Property("FileName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("HashedName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("Height")
.HasColumnType("smallint");
b.Property("IsDisabled")
.HasColumnType("bit");
b.Property("Path")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("PostID")
.HasColumnType("int");
b.Property("Size")
.HasColumnType("bigint");
b.Property("UUID")
.HasColumnType("uniqueidentifier");
b.Property("Url")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("Width")
.HasColumnType("smallint");
b.HasKey("ID");
b.HasIndex("BoardID");
b.HasIndex("CommentID");
b.HasIndex("PostID");
b.HasIndex("UUID")
.IsUnique();
b.ToTable("CommentImage", null, t =>
{
t.HasComment("댓글 이미지");
});
});
modelBuilder.Entity("Domain.Entities.Forum.Comments.CommentLink", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("BoardID")
.HasColumnType("int");
b.Property("Clicks")
.HasColumnType("int");
b.Property("CommentID")
.HasColumnType("int");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("DisabledAt")
.HasColumnType("datetime2");
b.Property("IsDisabled")
.HasColumnType("bit");
b.Property("PostID")
.HasColumnType("int");
b.Property("UUID")
.HasColumnType("uniqueidentifier");
b.Property("Url")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("ID");
b.HasIndex("BoardID");
b.HasIndex("CommentID");
b.HasIndex("PostID");
b.ToTable("CommentLink", null, t =>
{
t.HasComment("댓글 링크");
});
});
modelBuilder.Entity("Domain.Entities.Forum.Comments.CommentMedia", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("BoardID")
.HasColumnType("int");
b.Property("CommentID")
.HasColumnType("int");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("DisabledAt")
.HasColumnType("datetime2");
b.Property("IsDisabled")
.HasColumnType("bit");
b.Property("PostID")
.HasColumnType("int");
b.Property("Url")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("ID");
b.HasIndex("BoardID");
b.HasIndex("CommentID");
b.HasIndex("PostID");
b.ToTable("CommentMedia", null, t =>
{
t.HasComment("댓글 미디어");
});
});
modelBuilder.Entity("Domain.Entities.Forum.Comments.CommentMention", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("BoardID")
.HasColumnType("int")
.HasComment("게시판 ID");
b.Property("CommentID")
.HasColumnType("int")
.HasComment("댓글 ID");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("Length")
.HasColumnType("int")
.HasComment("길이");
b.Property("MemberID")
.HasColumnType("int")
.HasComment("언급된 회원 ID");
b.Property("PostID")
.HasColumnType("int")
.HasComment("게시글 ID");
b.Property("RawHandle")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasComment("원문 회원 언급값");
b.Property("Start")
.HasColumnType("int")
.HasComment("본문 내 시작 인덱스");
b.HasKey("ID");
b.HasIndex("BoardID");
b.HasIndex("CommentID")
.IsUnique();
b.HasIndex("MemberID");
b.HasIndex("PostID");
b.HasIndex("CommentID", "ID");
b.HasIndex("CommentID", "MemberID", "ID");
b.HasIndex("CommentID", "MemberID", "Start");
b.ToTable("CommentMention", null, t =>
{
t.HasComment("댓글 멘션");
});
});
modelBuilder.Entity("Domain.Entities.Forum.Comments.CommentReaction", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("BoardID")
.HasColumnType("int")
.HasComment("게시판 ID");
b.Property("CommentID")
.HasColumnType("int")
.HasComment("댓글 ID");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("IpAddress")
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasComment("IP Address");
b.Property("MemberID")
.HasColumnType("int")
.HasComment("회원 ID");
b.Property("PostID")
.HasColumnType("int")
.HasComment("게시글 ID");
b.Property("Reaction")
.HasColumnType("tinyint")
.HasComment("반응 구분");
b.Property("UpdatedAt")
.HasColumnType("datetime2")
.HasComment("수정 일시");
b.Property("UserAgent")
.HasMaxLength(255)
.HasColumnType("nvarchar(255)")
.HasComment("User-agent");
b.HasKey("ID");
b.HasIndex("BoardID");
b.HasIndex("CommentID");
b.HasIndex("CreatedAt");
b.HasIndex("MemberID");
b.HasIndex("PostID");
b.HasIndex("Reaction");
b.HasIndex("CommentID", "ID");
b.HasIndex("CommentID", "MemberID")
.IsUnique();
b.ToTable("CommentReaction", null, t =>
{
t.HasComment("댓글 반응");
});
});
modelBuilder.Entity("Domain.Entities.Forum.Comments.CommentReport", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("BoardID")
.HasColumnType("int")
.HasComment("게시판 ID");
b.Property("CommentID")
.HasColumnType("int")
.HasComment("댓글 ID");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("IpAddress")
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasComment("IP Address");
b.Property("MemberID")
.HasColumnType("int")
.HasComment("회원 ID");
b.Property("Memo")
.HasMaxLength(1000)
.HasColumnType("nvarchar(1000)")
.HasComment("처리 내용");
b.Property("PostID")
.HasColumnType("int")
.HasComment("게시글 ID");
b.Property("Reason")
.HasMaxLength(1000)
.HasColumnType("nvarchar(1000)")
.HasComment("신고 내용");
b.Property("Status")
.HasColumnType("tinyint")
.HasComment("처리 상태");
b.Property("Type")
.HasColumnType("tinyint")
.HasComment("신고 사유");
b.Property("UpdatedAt")
.HasColumnType("datetime2")
.HasComment("수정 일시");
b.Property("UserAgent")
.HasMaxLength(255)
.HasColumnType("nvarchar(255)")
.HasComment("User-agent");
b.HasKey("ID");
b.HasIndex("BoardID");
b.HasIndex("CommentID");
b.HasIndex("CreatedAt");
b.HasIndex("MemberID");
b.HasIndex("PostID");
b.HasIndex("Status");
b.HasIndex("Type");
b.HasIndex("CommentID", "ID");
b.HasIndex("CommentID", "MemberID")
.IsUnique();
b.ToTable("CommentReport", null, t =>
{
t.HasComment("댓글 신고");
});
});
modelBuilder.Entity("Domain.Entities.Forum.Logs.CommentFileDownLog", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("CommentFileID")
.HasColumnType("int")
.HasComment("댓글 파일 ID");
b.Property("CommentID")
.HasColumnType("int")
.HasComment("댓글 ID");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("IpAddress")
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasComment("IP Address");
b.Property("MemberID")
.HasColumnType("int")
.HasComment("회원 ID");
b.Property("UserAgent")
.HasMaxLength(255)
.HasColumnType("nvarchar(255)")
.HasComment("User-Agent");
b.HasKey("ID");
b.HasIndex("CommentFileID");
b.HasIndex("CommentID");
b.HasIndex("MemberID");
b.HasIndex("CommentID", "CommentFileID");
b.HasIndex("CommentID", "CommentFileID", "MemberID");
b.ToTable("CommentFileDownLog", null, t =>
{
t.HasComment("댓글 파일 다운로드 로그");
});
});
modelBuilder.Entity("Domain.Entities.Forum.Logs.CommentLinkClickLog", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("CommentID")
.HasColumnType("int")
.HasComment("댓글 ID");
b.Property("CommentLinkID")
.HasColumnType("int")
.HasComment("댓글 링크 ID");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property