//
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("20260703000621_RemoveDonationSettlementDeveloperDomains")]
partial class RemoveDonationSettlementDeveloperDomains
{
///
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "10.0.7")
.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.Common.EmailLog", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("Category")
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasComment("카테고리 (auth.register, forum.post.notify 등)");
b.Property("CreatedAt")
.ValueGeneratedOnAdd()
.HasColumnType("datetime2")
.HasDefaultValueSql("GETUTCDATE()")
.HasComment("등록 시각 (UTC)");
b.Property("FailedAt")
.HasColumnType("datetime2")
.HasComment("실패 확정 시각 (UTC)");
b.Property("LastError")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)")
.HasComment("마지막 오류 메시지");
b.Property("MaxRetryCount")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasDefaultValue(3)
.HasComment("최대 재시도 횟수");
b.Property("MessageHtml")
.IsRequired()
.HasColumnType("nvarchar(max)")
.HasComment("HTML 본문");
b.Property("MessageText")
.HasColumnType("nvarchar(max)")
.HasComment("텍스트 본문 (선택)");
b.Property("NextRetryAt")
.ValueGeneratedOnAdd()
.HasColumnType("datetime2")
.HasDefaultValueSql("GETUTCDATE()")
.HasComment("다음 시도 시각 (UTC)");
b.Property("ProcessedAt")
.HasColumnType("datetime2")
.HasComment("처리 완료 시각 (UTC)");
b.Property("RetryCount")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasDefaultValue(0)
.HasComment("재시도 횟수");
b.Property("Status")
.ValueGeneratedOnAdd()
.HasColumnType("tinyint")
.HasDefaultValue((byte)0)
.HasComment("상태 (0=Pending, 1=Processing, 2=Sent, 3=Failed)");
b.Property("Subject")
.IsRequired()
.HasMaxLength(500)
.HasColumnType("nvarchar(500)")
.HasComment("제목");
b.Property("ToAddress")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("nvarchar(256)")
.HasComment("수신자 이메일");
b.HasKey("ID");
b.HasIndex("CreatedAt")
.HasDatabaseName("IX_EmailLog_CreatedAt");
b.HasIndex("Status", "NextRetryAt")
.HasDatabaseName("IX_EmailLog_Status_NextRetryAt");
b.ToTable("EmailLog", 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.Feed.FeedBookmark", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("FeedPostID")
.HasColumnType("int");
b.Property("IpAddress")
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property("MemberID")
.HasColumnType("int");
b.Property("UserAgent")
.HasMaxLength(255)
.HasColumnType("nvarchar(255)");
b.HasKey("ID");
b.HasIndex("FeedPostID");
b.HasIndex("MemberID");
b.HasIndex("FeedPostID", "MemberID")
.IsUnique();
b.HasIndex("MemberID", "CreatedAt")
.IsDescending(false, true);
b.ToTable("FeedBookmark", null, t =>
{
t.HasComment("피드 포스트 북마크");
});
});
modelBuilder.Entity("Domain.Entities.Feed.FeedComment", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("Content")
.IsRequired()
.HasMaxLength(2000)
.HasColumnType("nvarchar(2000)")
.HasComment("댓글 내용");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("DeletedAt")
.HasColumnType("datetime2")
.HasComment("삭제 일시");
b.Property("Depth")
.HasColumnType("smallint")
.HasComment("중첩 깊이 (0 = 루트)");
b.Property("FeedPostID")
.HasColumnType("int")
.HasComment("FeedPost ID");
b.Property("IpAddress")
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property("IsDeleted")
.HasColumnType("bit")
.HasComment("삭제 여부");
b.Property("Likes")
.HasColumnType("int")
.HasComment("좋아요 수");
b.Property("MemberID")
.HasColumnType("int")
.HasComment("작성 회원 ID");
b.Property("ParentID")
.HasColumnType("int")
.HasComment("부모 댓글 ID (대댓글용)");
b.Property("Replies")
.HasColumnType("int")
.HasComment("자식 댓글 수");
b.Property("Reports")
.HasColumnType("int")
.HasComment("신고 수");
b.Property("Score")
.HasColumnType("int")
.HasComment("랭킹 스코어");
b.Property("UpdatedAt")
.HasColumnType("datetime2")
.HasComment("수정 일시");
b.Property("UserAgent")
.HasMaxLength(255)
.HasColumnType("nvarchar(255)");
b.HasKey("ID");
b.HasIndex("FeedPostID");
b.HasIndex("MemberID");
b.HasIndex("ParentID");
b.HasIndex("FeedPostID", "IsDeleted", "ParentID", "CreatedAt")
.IsDescending(false, false, false, true);
b.HasIndex("FeedPostID", "IsDeleted", "ParentID", "Score", "ID")
.IsDescending(false, false, false, true, true);
b.HasIndex("FeedPostID", "MemberID", "IsDeleted", "ParentID", "CreatedAt")
.IsDescending(false, false, false, false, true);
b.ToTable("FeedComment", null, t =>
{
t.HasComment("피드 댓글 (Reddit식 계층형)");
});
});
modelBuilder.Entity("Domain.Entities.Feed.FeedCommentLike", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("FeedCommentID")
.HasColumnType("int");
b.Property("FeedPostID")
.HasColumnType("int");
b.Property("IpAddress")
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property("MemberID")
.HasColumnType("int");
b.Property("UserAgent")
.HasMaxLength(255)
.HasColumnType("nvarchar(255)");
b.HasKey("ID");
b.HasIndex("FeedCommentID");
b.HasIndex("FeedPostID");
b.HasIndex("MemberID");
b.HasIndex("FeedCommentID", "MemberID")
.IsUnique();
b.ToTable("FeedCommentLike", null, t =>
{
t.HasComment("피드 댓글 좋아요");
});
});
modelBuilder.Entity("Domain.Entities.Feed.FeedLike", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("FeedPostID")
.HasColumnType("int");
b.Property("IpAddress")
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property("MemberID")
.HasColumnType("int");
b.Property("UserAgent")
.HasMaxLength(255)
.HasColumnType("nvarchar(255)");
b.HasKey("ID");
b.HasIndex("FeedPostID");
b.HasIndex("MemberID");
b.HasIndex("FeedPostID", "MemberID")
.IsUnique();
b.ToTable("FeedLike", null, t =>
{
t.HasComment("피드 포스트 좋아요");
});
});
modelBuilder.Entity("Domain.Entities.Feed.FeedPost", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("Bookmarks")
.HasColumnType("int")
.HasComment("북마크 수");
b.Property("Comments")
.HasColumnType("int")
.HasComment("댓글 수");
b.Property("Content")
.IsRequired()
.HasMaxLength(5000)
.HasColumnType("nvarchar(max)")
.HasComment("본문");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("DeletedAt")
.HasColumnType("datetime2")
.HasComment("삭제 일시");
b.Property("Images")
.HasColumnType("tinyint")
.HasComment("이미지 개수");
b.Property("IpAddress")
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasComment("작성자 IP");
b.Property("IsDeleted")
.HasColumnType("bit")
.HasComment("삭제 여부");
b.Property("Likes")
.HasColumnType("int")
.HasComment("좋아요 수");
b.Property("Medias")
.HasColumnType("tinyint")
.HasComment("미디어 개수");
b.Property("MemberID")
.HasColumnType("int")
.HasComment("작성 회원 ID");
b.Property("Reports")
.HasColumnType("int")
.HasComment("신고 수");
b.Property("Tags")
.HasColumnType("tinyint")
.HasComment("태그 개수");
b.Property("Thumbnail")
.HasMaxLength(1000)
.HasColumnType("nvarchar(1000)")
.HasComment("썸네일 URL");
b.Property("UpdatedAt")
.HasColumnType("datetime2")
.HasComment("수정 일시");
b.Property("UserAgent")
.HasMaxLength(255)
.HasColumnType("nvarchar(255)")
.HasComment("작성자 User-Agent");
b.Property("Views")
.HasColumnType("int")
.HasComment("조회수");
b.HasKey("ID");
b.HasIndex("CreatedAt");
b.HasIndex("IsDeleted");
b.HasIndex("MemberID");
b.HasIndex("IsDeleted", "CreatedAt");
b.HasIndex("MemberID", "IsDeleted", "CreatedAt");
b.HasIndex("IsDeleted", "Likes", "Comments", "Views");
b.ToTable("FeedPost", null, t =>
{
t.HasComment("피드 포스트");
});
});
modelBuilder.Entity("Domain.Entities.Feed.FeedPostImage", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("ContentType")
.HasMaxLength(100)
.HasColumnType("nvarchar(100)")
.HasComment("MIME");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("DisabledAt")
.HasColumnType("datetime2")
.HasComment("비활성 일시");
b.Property("Extension")
.HasMaxLength(10)
.HasColumnType("nvarchar(10)")
.HasComment("확장자");
b.Property("FeedPostID")
.HasColumnType("int");
b.Property("FileName")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("nvarchar(255)")
.HasComment("원본 파일명");
b.Property("HashedName")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("nvarchar(255)")
.HasComment("저장 파일명(해시)");
b.Property("Height")
.HasColumnType("smallint")
.HasComment("세로 픽셀");
b.Property("IsDisabled")
.HasColumnType("bit")
.HasComment("비활성 여부");
b.Property("Path")
.IsRequired()
.HasMaxLength(500)
.HasColumnType("nvarchar(500)")
.HasComment("상대 경로");
b.Property("Size")
.HasColumnType("bigint")
.HasComment("바이트 크기");
b.Property("UUID")
.HasColumnType("uniqueidentifier")
.HasComment("UUID");
b.Property("Url")
.IsRequired()
.HasMaxLength(1000)
.HasColumnType("nvarchar(1000)")
.HasComment("접근 URL");
b.Property("Width")
.HasColumnType("smallint")
.HasComment("가로 픽셀");
b.HasKey("ID");
b.HasIndex("FeedPostID");
b.HasIndex("UUID")
.IsUnique();
b.HasIndex("FeedPostID", "HashedName");
b.HasIndex("FeedPostID", "IsDisabled");
b.ToTable("FeedPostImage", null, t =>
{
t.HasComment("피드 포스트 이미지");
});
});
modelBuilder.Entity("Domain.Entities.Feed.FeedPostMedia", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("FeedPostID")
.HasColumnType("int");
b.Property("Url")
.IsRequired()
.HasMaxLength(1000)
.HasColumnType("nvarchar(1000)")
.HasComment("미디어 URL");
b.HasKey("ID");
b.HasIndex("FeedPostID");
b.ToTable("FeedPostMedia", null, t =>
{
t.HasComment("피드 포스트 미디어 링크");
});
});
modelBuilder.Entity("Domain.Entities.Feed.FeedPostMention", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("FeedPostID")
.HasColumnType("int");
b.Property("Length")
.HasColumnType("int")
.HasComment("길이");
b.Property("MemberID")
.HasColumnType("int");
b.Property("RawHandle")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasComment("원문 @handle");
b.Property("Start")
.HasColumnType("int")
.HasComment("본문 내 시작 인덱스");
b.HasKey("ID");
b.HasIndex("FeedPostID");
b.HasIndex("MemberID");
b.HasIndex("FeedPostID", "MemberID")
.IsUnique();
b.HasIndex("MemberID", "CreatedAt")
.IsDescending(false, true);
b.ToTable("FeedPostMention", null, t =>
{
t.HasComment("피드 포스트 멘션");
});
});
modelBuilder.Entity("Domain.Entities.Feed.FeedPostTag", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("FeedPostID")
.HasColumnType("int");
b.Property("FeedTagID")
.HasColumnType("int");
b.HasKey("ID");
b.HasIndex("FeedPostID");
b.HasIndex("FeedTagID");
b.HasIndex("FeedPostID", "FeedTagID")
.IsUnique();
b.HasIndex("FeedTagID", "CreatedAt")
.IsDescending(false, true);
b.ToTable("FeedPostTag", null, t =>
{
t.HasComment("피드 포스트-태그 조인");
});
});
modelBuilder.Entity("Domain.Entities.Feed.FeedTag", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("Name")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)")
.HasComment("태그 이름");
b.Property("Slug")
.IsRequired()
.HasMaxLength(120)
.HasColumnType("nvarchar(120)")
.HasComment("태그 슬러그 (URL용)");
b.Property("UpdatedAt")
.HasColumnType("datetime2")
.HasComment("수정 일시");
b.Property("UsageCount")
.HasColumnType("bigint")
.HasComment("사용 횟수");
b.HasKey("ID");
b.HasIndex("Name")
.IsUnique();
b.HasIndex("Slug")
.IsUnique();
b.HasIndex("UsageCount")
.IsDescending();
b.ToTable("FeedTag", 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("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("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