//
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.Persistence.Migrations
{
[DbContext(typeof(AppDbContext))]
[Migration("20260324193650_AddPaymentTables")]
partial class AddPaymentTables
{
///
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "10.0.5")
.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.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.Donations.Crew", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("ChannelID")
.HasColumnType("int");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("Description")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property("IsActive")
.HasColumnType("bit");
b.Property("MemberID")
.HasColumnType("int");
b.Property("MinAmount")
.HasColumnType("int");
b.Property("Name")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property("UpdatedAt")
.HasColumnType("datetime2");
b.HasKey("ID");
b.HasIndex("MemberID");
b.HasIndex("ChannelID", "IsActive");
b.ToTable("Crew", null, t =>
{
t.HasComment("크루");
});
});
modelBuilder.Entity("Domain.Entities.Donations.CrewDonationSummary", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("ContributionRate")
.HasPrecision(5, 2)
.HasColumnType("decimal(5,2)");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("CrewMemberID")
.HasColumnType("int");
b.Property("CrewSessionID")
.HasColumnType("int");
b.Property("DonationCount")
.HasColumnType("int");
b.Property("Rank")
.HasColumnType("int");
b.Property("TotalAmount")
.HasColumnType("int");
b.Property("UpdatedAt")
.HasColumnType("datetime2");
b.HasKey("ID");
b.HasIndex("CrewMemberID");
b.HasIndex("CrewSessionID", "CrewMemberID")
.IsUnique();
b.HasIndex("CrewSessionID", "Rank");
b.ToTable("CrewDonationSummary", null, t =>
{
t.HasComment("크루원 후원 집계");
});
});
modelBuilder.Entity("Domain.Entities.Donations.CrewMember", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("ChannelID")
.HasColumnType("int");
b.Property("CrewID")
.HasColumnType("int");
b.Property("IsActive")
.HasColumnType("bit");
b.Property("JoinedAt")
.HasColumnType("datetime2");
b.Property("MemberID")
.HasColumnType("int");
b.Property("Nickname")
.IsRequired()
.HasMaxLength(40)
.HasColumnType("nvarchar(40)");
b.Property("Role")
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property("SortOrder")
.HasColumnType("int");
b.HasKey("ID");
b.HasIndex("ChannelID");
b.HasIndex("MemberID");
b.HasIndex("CrewID", "MemberID")
.IsUnique();
b.ToTable("CrewMember", null, t =>
{
t.HasComment("크루원");
});
});
modelBuilder.Entity("Domain.Entities.Donations.CrewSession", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("CrewID")
.HasColumnType("int");
b.Property("EndedAt")
.HasColumnType("datetime2");
b.Property("StartedAt")
.HasColumnType("datetime2");
b.Property("Status")
.HasColumnType("int");
b.Property("Title")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property("TotalAmount")
.HasColumnType("int");
b.Property("TotalDonationCount")
.HasColumnType("int");
b.HasKey("ID");
b.HasIndex("CrewID", "StartedAt");
b.HasIndex("CrewID", "Status");
b.ToTable("CrewSession", null, t =>
{
t.HasComment("크루 후원 방송 세션");
});
});
modelBuilder.Entity("Domain.Entities.Donations.CrewSessionConsent", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("ConsentedAt")
.HasColumnType("datetime2");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("CrewMemberID")
.HasColumnType("int");
b.Property("CrewSessionID")
.HasColumnType("int");
b.Property("IsConsented")
.HasColumnType("bit");
b.HasKey("ID");
b.HasIndex("CrewMemberID");
b.HasIndex("CrewSessionID", "CrewMemberID")
.IsUnique();
b.ToTable("CrewSessionConsent", null, t =>
{
t.HasComment("크루원 방송 동의");
});
});
modelBuilder.Entity("Domain.Entities.Donations.Donation", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("Amount")
.HasColumnType("int");
b.Property("ChannelID")
.HasColumnType("int");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("CrewMemberID")
.HasColumnType("int");
b.Property("CrewSessionID")
.HasColumnType("int");
b.Property("FeeAmount")
.HasColumnType("int");
b.Property("FeeRate")
.HasPrecision(5, 2)
.HasColumnType("decimal(5,2)");
b.Property("IsTest")
.HasColumnType("bit");
b.Property("Message")
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property("NetAmount")
.HasColumnType("int");
b.Property("ReceiverMemberID")
.HasColumnType("int");
b.Property("SendName")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property("SponsorMemberID")
.HasColumnType("int");
b.HasKey("ID");
b.HasIndex("ChannelID");
b.HasIndex("CrewMemberID");
b.HasIndex("CrewSessionID");
b.HasIndex("ReceiverMemberID");
b.HasIndex("SponsorMemberID");
b.HasIndex("ChannelID", "CreatedAt");
b.HasIndex("SponsorMemberID", "ReceiverMemberID");
b.ToTable("Donation", null, t =>
{
t.HasComment("후원 내역");
});
});
modelBuilder.Entity("Domain.Entities.Donations.DonationAlert", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("ArrivedAt")
.HasColumnType("datetime2");
b.Property("CorrelationID")
.HasColumnType("uniqueidentifier");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("DonationID")
.HasColumnType("int");
b.Property("IpAddress")
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property("ReceiverMemberID")
.HasColumnType("int");
b.Property("SponsorMemberID")
.HasColumnType("int");
b.Property("StartAt")
.HasColumnType("datetime2");
b.Property("Status")
.HasColumnType("int");
b.Property("TotalDelayMs")
.HasColumnType("float");
b.Property("UserAgent")
.HasMaxLength(255)
.HasColumnType("nvarchar(255)");
b.HasKey("ID");
b.HasIndex("CorrelationID")
.IsUnique();
b.HasIndex("DonationID")
.IsUnique();
b.HasIndex("SponsorMemberID");
b.HasIndex("Status");
b.HasIndex("ReceiverMemberID", "Status", "CreatedAt")
.IsDescending(false, false, true);
b.ToTable("DonationAlert", null, t =>
{
t.HasComment("후원 알림 추적");
});
});
modelBuilder.Entity("Domain.Entities.Donations.DonationAlertAttempt", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("DonationAlertID")
.HasColumnType("int");
b.Property("DonationID")
.HasColumnType("int");
b.Property("IpAddress")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property("SentAt")
.HasColumnType("datetime2");
b.Property("UserAgent")
.HasMaxLength(1024)
.HasColumnType("nvarchar(1024)");
b.HasKey("ID");
b.HasIndex("DonationAlertID");
b.HasIndex("DonationID", "DonationAlertID");
b.ToTable("DonationAlertAttempt", null, t =>
{
t.HasComment("후원 알림 재시도 기록");
});
});
modelBuilder.Entity("Domain.Entities.Donations.DonationAlertConfig", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("Amount")
.HasColumnType("int");
b.Property("ChannelID")
.HasColumnType("int");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("DisplayDurationSec")
.HasColumnType("float");
b.Property("EnableThumbnail")
.HasColumnType("bit");
b.Property("IsActive")
.HasColumnType("bit");
b.Property("MemberID")
.HasColumnType("int");
b.Property("Message")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property("PlayDelaySec")
.HasColumnType("float");
b.Property("Sound")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property("ThumbnailUrl")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property("Title")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property("UpdatedAt")
.HasColumnType("datetime2");
b.HasKey("ID");
b.HasIndex("MemberID");
b.HasIndex("ChannelID", "IsActive");
b.HasIndex("ChannelID", "MemberID", "Amount");
b.ToTable("DonationAlertConfig", null, t =>
{
t.HasComment("후원 알림 위젯 설정");
});
});
modelBuilder.Entity("Domain.Entities.Donations.DonationGoalConfig", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("AmountFontColor")
.IsRequired()
.HasMaxLength(9)
.HasColumnType("nvarchar(9)");
b.Property("AmountFontSizePx")
.HasColumnType("int");
b.Property("BarBackgroundColor")
.IsRequired()
.HasMaxLength(9)
.HasColumnType("nvarchar(9)");
b.Property("BarColor")
.IsRequired()
.HasMaxLength(9)
.HasColumnType("nvarchar(9)");
b.Property("BarHeightPx")
.HasColumnType("int");
b.Property("ChannelID")
.HasColumnType("int");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("EndAt")
.HasColumnType("datetime2");
b.Property("IsActive")
.HasColumnType("bit");
b.Property("IsShowPercent")
.HasColumnType("bit");
b.Property("MemberID")
.HasColumnType("int");
b.Property("StartAmount")
.HasColumnType("int");
b.Property("StartAt")
.HasColumnType("datetime2");
b.Property("Style")
.HasColumnType("int");
b.Property("TargetAmount")
.HasColumnType("int");
b.Property("Title")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property("TitleFontColor")
.IsRequired()
.HasMaxLength(9)
.HasColumnType("nvarchar(9)");
b.Property("TitleFontSizePx")
.HasColumnType("int");
b.Property("UpdatedAt")
.HasColumnType("datetime2");
b.HasKey("ID");
b.HasIndex("MemberID");
b.HasIndex("ChannelID", "IsActive");
b.HasIndex("ChannelID", "MemberID");
b.ToTable("DonationGoalConfig", null, t =>
{
t.HasComment("후원 목표 위젯 설정");
});
});
modelBuilder.Entity("Domain.Entities.Donations.DonationMeta", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("ChannelID")
.HasColumnType("int");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("IsAccepting")
.HasColumnType("bit");
b.Property("IsAudioOnly")
.HasColumnType("bit");
b.Property("IsPaused")
.HasColumnType("bit");
b.Property("IsVideoOnly")
.HasColumnType("bit");
b.Property("MemberID")
.HasColumnType("int");
b.Property("MinAmount")
.HasColumnType("int");
b.Property("UpdatedAt")
.HasColumnType("datetime2");
b.HasKey("ID");
b.HasIndex("MemberID");
b.HasIndex("ChannelID", "MemberID")
.IsUnique();
b.ToTable("DonationMeta", null, t =>
{
t.HasComment("후원 공통 설정");
});
});
modelBuilder.Entity("Domain.Entities.Donations.DonationRankConfig", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("ChannelID")
.HasColumnType("int");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("EndAt")
.HasColumnType("datetime2");
b.Property("IsActive")
.HasColumnType("bit");
b.Property("IsShowAmount")
.HasColumnType("bit");
b.Property("MaxRankCount")
.HasColumnType("int");
b.Property("MemberID")
.HasColumnType("int");
b.Property("NameMode")
.HasColumnType("bit");
b.Property("Period")
.HasColumnType("int");
b.Property("StartAt")
.HasColumnType("datetime2");
b.Property("Theme")
.HasColumnType("int");
b.Property("Title")
.IsRequired()
.HasMaxLength(300)
.HasColumnType("nvarchar(300)");
b.Property("UpdatedAt")
.HasColumnType("datetime2");
b.HasKey("ID");
b.HasIndex("MemberID");
b.HasIndex("ChannelID", "MemberID")
.IsUnique();
b.ToTable("DonationRankConfig", null, t =>
{
t.HasComment("후원 순위 위젯 설정");
});
});
modelBuilder.Entity("Domain.Entities.Donations.DonationRanking", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("ChannelID")
.HasColumnType("int");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("DonationCount")
.HasColumnType("int");
b.Property("IsActive")
.HasColumnType("bit");
b.Property("PeriodEnd")
.HasColumnType("datetime2");
b.Property("PeriodStart")
.HasColumnType("datetime2");
b.Property("PeriodType")
.HasColumnType("int");
b.Property("Rank")
.HasColumnType("int");
b.Property("SponsorMemberID")
.HasColumnType("int");
b.Property("SponsorName")
.IsRequired()
.HasMaxLength(40)
.HasColumnType("nvarchar(40)");
b.Property("TotalAmount")
.HasColumnType("int");
b.Property("UpdatedAt")
.HasColumnType("datetime2");
b.HasKey("ID");
b.HasIndex("SponsorMemberID");
b.HasIndex("ChannelID", "PeriodType", "PeriodStart", "Rank");
b.HasIndex("ChannelID", "SponsorMemberID", "PeriodType", "PeriodStart")
.IsUnique();
b.ToTable("DonationRanking", null, t =>
{
t.HasComment("후원 순위");
});
});
modelBuilder.Entity("Domain.Entities.Donations.Settlement", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("AdminMemo")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property("ApprovedAt")
.HasColumnType("datetime2");
b.Property("ChannelID")
.HasColumnType("int");
b.Property("FeeAmount")
.HasColumnType("int");
b.Property("GrossAmount")
.HasColumnType("int");
b.Property("MemberID")
.HasColumnType("int");
b.Property("NetAmount")
.HasColumnType("int");
b.Property("PaidAt")
.HasColumnType("datetime2");
b.Property("PeriodEnd")
.HasColumnType("datetime2");
b.Property("PeriodStart")
.HasColumnType("datetime2");
b.Property("RequestedAt")
.HasColumnType("datetime2");
b.Property("Status")
.HasColumnType("int");
b.HasKey("ID");
b.HasIndex("MemberID");
b.HasIndex("Status");
b.HasIndex("ChannelID", "PeriodStart", "PeriodEnd");
b.ToTable("Settlement", 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("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