//
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("20260205103258_AddMemberLogs")]
partial class AddMemberLogs
{
///
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.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.Members.Channel", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("Handle")
.HasMaxLength(30)
.HasColumnType("nvarchar(30)")
.HasComment("핸들");
b.Property("IsActive")
.HasColumnType("bit")
.HasComment("활성 여부");
b.Property("IsVerified")
.HasColumnType("bit")
.HasComment("인증 여부");
b.Property("MemberID")
.HasColumnType("int")
.HasComment("회원 ID");
b.Property("Name")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)")
.HasComment("채널 이름");
b.Property("PlatformFeeRate")
.HasPrecision(5, 2)
.HasColumnType("decimal(5,2)")
.HasComment("수수료(%)");
b.Property("SID")
.IsRequired()
.HasMaxLength(24)
.HasColumnType("nvarchar(24)")
.HasComment("채널 ID");
b.Property("UpdatedAt")
.HasColumnType("datetime2")
.HasComment("수정 일시");
b.Property("YouTubeUrl")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("nvarchar(255)")
.HasComment("YouTube 채널 URL");
b.HasKey("ID");
b.HasIndex("Handle")
.IsUnique()
.HasFilter("[Handle] IS NOT NULL");
b.HasIndex("MemberID")
.IsUnique();
b.HasIndex("Name")
.IsUnique();
b.HasIndex("SID")
.IsUnique();
b.HasIndex("YouTubeUrl")
.IsUnique();
b.HasIndex("MemberID", "IsActive");
b.HasIndex("MemberID", "IsVerified");
b.HasIndex("MemberID", "IsVerified", "IsActive");
b.ToTable("Channel", null, t =>
{
t.HasComment("채널 정보");
});
});
modelBuilder.Entity("Domain.Entities.Members.Logs.MemberEmailChangeLog", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("AfterEmail")
.IsRequired()
.HasMaxLength(60)
.HasColumnType("nvarchar(60)")
.HasComment("바뀐 이메일");
b.Property("BeforeEmail")
.HasMaxLength(60)
.HasColumnType("nvarchar(60)")
.HasComment("이전 이메일");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("IpAddress")
.HasMaxLength(45)
.HasColumnType("nvarchar(45)")
.HasComment("IP Address");
b.Property("MemberID")
.HasColumnType("int")
.HasComment("회원 ID");
b.Property("Referer")
.HasColumnType("nvarchar(max)")
.HasComment("이전 페이지 주소");
b.Property("UserAgent")
.HasMaxLength(512)
.HasColumnType("nvarchar(512)")
.HasComment("User Agent");
b.HasKey("ID");
b.HasIndex("CreatedAt");
b.HasIndex("MemberID");
b.ToTable("MemberEmailChangeLog", null, t =>
{
t.HasComment("사용자 이메일 변경 내역");
});
});
modelBuilder.Entity("Domain.Entities.Members.Logs.MemberIntroChangeLog", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("AfterIntro")
.HasMaxLength(3000)
.HasColumnType("nvarchar(3000)")
.HasComment("바꾼 자기소개");
b.Property("BeforeIntro")
.HasMaxLength(3000)
.HasColumnType("nvarchar(3000)")
.HasComment("이전 자기소개");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("IpAddress")
.HasMaxLength(15)
.HasColumnType("nvarchar(15)")
.HasComment("IP Address");
b.Property("MemberID")
.HasColumnType("int")
.HasComment("회원 ID");
b.Property("Referer")
.HasColumnType("nvarchar(max)")
.HasComment("이전 페이지 주소");
b.Property("UserAgent")
.HasMaxLength(512)
.HasColumnType("nvarchar(512)")
.HasComment("User Agent");
b.HasKey("ID");
b.HasIndex("MemberID");
b.ToTable("MemberIntroChangeLog", null, t =>
{
t.HasComment("자기소개 변경 내역");
});
});
modelBuilder.Entity("Domain.Entities.Members.Logs.MemberLoginLog", 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 Address");
b.Property("MemberID")
.HasColumnType("int")
.HasComment("회원 ID");
b.Property("Reason")
.HasMaxLength(225)
.HasColumnType("nvarchar(225)")
.HasComment("실패 이유");
b.Property("Referer")
.HasColumnType("nvarchar(max)")
.HasComment("이전 페이지 주소");
b.Property("Success")
.HasColumnType("bit")
.HasComment("로그인 성공 여부 (0: 실패, 1: 성공)");
b.Property("Url")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)")
.HasComment("요청 주소");
b.Property("UserAgent")
.HasMaxLength(512)
.HasColumnType("nvarchar(512)")
.HasComment("User Agent");
b.HasKey("ID");
b.HasIndex("Account");
b.HasIndex("MemberID");
b.HasIndex("MemberID", "Success");
b.ToTable("MemberLoginLog", null, t =>
{
t.HasComment("로그인 기록");
});
});
modelBuilder.Entity("Domain.Entities.Members.Logs.MemberNameChangeLog", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("AfterName")
.HasMaxLength(40)
.HasColumnType("nvarchar(40)")
.HasComment("바꾼 별명");
b.Property("BeforeName")
.HasMaxLength(40)
.HasColumnType("nvarchar(40)")
.HasComment("이전 별명");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("IpAddress")
.HasMaxLength(15)
.HasColumnType("nvarchar(15)")
.HasComment("IP Address");
b.Property("MemberID")
.HasColumnType("int")
.HasComment("회원 ID");
b.Property("Referer")
.HasColumnType("nvarchar(max)")
.HasComment("이전 페이지 주소");
b.Property("UserAgent")
.HasMaxLength(512)
.HasColumnType("nvarchar(512)")
.HasComment("User Agent");
b.HasKey("ID");
b.HasIndex("MemberID");
b.ToTable("MemberNameChangeLog", null, t =>
{
t.HasComment("별명 변경 내역");
});
});
modelBuilder.Entity("Domain.Entities.Members.Logs.MemberSummaryChangeLog", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("AfterSummary")
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasComment("바꾼 한마디");
b.Property("BeforeSummary")
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasComment("이전 한마디");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("IpAddress")
.HasMaxLength(15)
.HasColumnType("nvarchar(15)")
.HasComment("IP Address");
b.Property("MemberID")
.HasColumnType("int")
.HasComment("회원 ID");
b.Property("Referer")
.HasColumnType("nvarchar(max)")
.HasComment("이전 페이지 주소");
b.Property("UserAgent")
.HasMaxLength(512)
.HasColumnType("nvarchar(512)")
.HasComment("User Agent");
b.HasKey("ID");
b.HasIndex("MemberID");
b.ToTable("MemberSummaryChangeLog", null, t =>
{
t.HasComment("한마디 변경 내역");
});
});
modelBuilder.Entity("Domain.Entities.Members.Member", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("AuthCertifiedAt")
.HasColumnType("datetime2")
.HasComment("본인인증 일시");
b.Property("Birthday")
.HasColumnType("date")
.HasComment("생년월일");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("가입 일시");
b.Property("DeletedAt")
.HasColumnType("datetime2")
.HasComment("탈퇴 일시");
b.Property("DeniedAt")
.HasColumnType("datetime2")
.HasComment("차단 일시");
b.Property("DeviceInfo")
.HasMaxLength(400)
.HasColumnType("nvarchar(400)")
.HasComment("로그인 단말기 정보");
b.Property("Email")
.IsRequired()
.HasMaxLength(60)
.HasColumnType("nvarchar(60)")
.HasComment("이메일");
b.Property("EmailVerifiedAt")
.HasColumnType("datetime2")
.HasComment("이메일 인증 일시");
b.Property("FirstName")
.HasMaxLength(20)
.HasColumnType("nvarchar(20)")
.HasComment("본명(성)");
b.Property("FullName")
.HasMaxLength(40)
.HasColumnType("nvarchar(40)")
.HasComment("본명");
b.Property("Gender")
.HasColumnType("int")
.HasComment("성별");
b.Property("Icon")
.HasMaxLength(255)
.HasColumnType("nvarchar(255)")
.HasComment("아이콘");
b.Property("Intro")
.HasMaxLength(1000)
.HasColumnType("nvarchar(1000)")
.HasComment("자기소개");
b.Property("IpAddress")
.HasMaxLength(45)
.HasColumnType("nvarchar(45)")
.HasComment("IP Address");
b.Property("IsAdmin")
.HasColumnType("bit")
.HasComment("운영진 여부");
b.Property("IsAuthCertified")
.HasColumnType("bit")
.HasComment("본인 인증 여부");
b.Property("IsCreator")
.HasColumnType("bit")
.HasComment("크리에이터 여부");
b.Property("IsDenied")
.HasColumnType("bit")
.HasComment("차단 여부");
b.Property("IsEmailVerified")
.HasColumnType("bit")
.HasComment("이메일 인증 여부");
b.Property("IsWithdraw")
.HasColumnType("bit")
.HasComment("탈퇴 여부");
b.Property("LastEmailChangedAt")
.HasColumnType("datetime2")
.HasComment("마지막 이메일 변경 일시");
b.Property("LastIntroChangedAt")
.HasColumnType("datetime2")
.HasComment("마지막 자기소개 변경 일시");
b.Property("LastLoginAt")
.HasColumnType("datetime2")
.HasComment("마지막 로그인 일시");
b.Property("LastLoginIp")
.HasMaxLength(15)
.HasColumnType("nvarchar(15)")
.HasComment("마지막 로그인 IP");
b.Property("LastName")
.HasMaxLength(40)
.HasColumnType("nvarchar(40)")
.HasComment("본명(이름)");
b.Property("LastNameChangedAt")
.HasColumnType("datetime2")
.HasComment("마지막 별명 변경 일시");
b.Property("LastSummaryChangedAt")
.HasColumnType("datetime2")
.HasComment("마지막 한마디 변경 일시");
b.Property("MemberGradeID")
.HasColumnType("int")
.HasComment("회원등급 PK");
b.Property("Name")
.HasMaxLength(20)
.HasColumnType("nvarchar(20)")
.HasComment("별명");
b.Property("Password")
.HasMaxLength(255)
.HasColumnType("nvarchar(255)")
.HasComment("비밀번호");
b.Property("PasswordUpdatedAt")
.HasColumnType("datetime2")
.HasComment("비밀번호 변경 일시");
b.Property("Phone")
.HasMaxLength(15)
.HasColumnType("nvarchar(15)")
.HasComment("연락처");
b.Property("SID")
.IsRequired()
.HasMaxLength(20)
.HasColumnType("nvarchar(20)")
.HasComment("SID");
b.Property("SignupIP")
.HasMaxLength(15)
.HasColumnType("nvarchar(15)")
.HasComment("회원가입 시 IP");
b.Property("Summary")
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasComment("한마디");
b.Property("Thunmbnail")
.HasMaxLength(255)
.HasColumnType("nvarchar(255)")
.HasComment("썸네일");
b.Property("UpdatedAt")
.HasColumnType("datetime2")
.HasComment("수정 일시");
b.Property("UserAgent")
.HasMaxLength(255)
.HasColumnType("nvarchar(255)")
.HasComment("User-agent");
b.HasKey("ID");
b.HasIndex("CreatedAt");
b.HasIndex("DeletedAt");
b.HasIndex("Email")
.IsUnique();
b.HasIndex("FullName");
b.HasIndex("Gender");
b.HasIndex("IsAdmin");
b.HasIndex("IsAuthCertified");
b.HasIndex("IsCreator");
b.HasIndex("IsDenied");
b.HasIndex("IsEmailVerified");
b.HasIndex("IsWithdraw");
b.HasIndex("MemberGradeID");
b.HasIndex("Name")
.IsUnique()
.HasFilter("[Name] IS NOT NULL");
b.HasIndex("Phone");
b.HasIndex("SID")
.IsUnique();
b.ToTable("Member", null, t =>
{
t.HasComment("회원 정보");
});
});
modelBuilder.Entity("Domain.Entities.Members.MemberApprove", b =>
{
b.Property("MemberID")
.HasColumnType("int")
.HasComment("회원 ID");
b.Property("DisclosureInvestConsentAt")
.HasColumnType("datetime2")
.HasComment("투자 현황 공개 동의 일시");
b.Property("IsDisclosureInvest")
.HasColumnType("bit")
.HasComment("투자 현황 공개 여부");
b.Property("IsReceiveEmail")
.HasColumnType("bit")
.HasComment("E-MAIL 수신 여부");
b.Property("IsReceiveNote")
.HasColumnType("bit")
.HasComment("쪽지 수신 여부");
b.Property("IsReceiveSMS")
.HasColumnType("bit")
.HasComment("SMS 수신 여부");
b.Property("ReceiveEmailConsentAt")
.HasColumnType("datetime2")
.HasComment("E-MAIL 수신 동의 일시");
b.Property("ReceiveNoteConsentAt")
.HasColumnType("datetime2")
.HasComment("쪽지 수신 동의 일시");
b.Property("ReceiveSMSConsentAt")
.HasColumnType("datetime2")
.HasComment("SMS 수신 동의 일시");
b.HasKey("MemberID");
b.ToTable("MemberApprove", null, t =>
{
t.HasComment("회원 동의 및 수신 여부");
});
});
modelBuilder.Entity("Domain.Entities.Members.MemberGrade", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("Description")
.HasMaxLength(1000)
.HasColumnType("nvarchar(1000)")
.HasComment("설명");
b.Property("EngName")
.IsRequired()
.HasMaxLength(120)
.HasColumnType("nvarchar(120)")
.HasComment("영문 명");
b.Property("Image")
.HasMaxLength(1000)
.HasColumnType("nvarchar(1000)")
.HasComment("이미지");
b.Property("IsActive")
.HasColumnType("bit")
.HasComment("사용 여부");
b.Property("KorName")
.IsRequired()
.HasMaxLength(240)
.HasColumnType("nvarchar(240)")
.HasComment("한글 명");
b.Property("Order")
.HasColumnType("smallint")
.HasComment("순서");
b.Property("RequiredAttendance")
.HasColumnType("bigint")
.HasComment("누적 출석 수");
b.Property("RequiredExp")
.HasColumnType("int")
.HasComment("누적 경험치");
b.Property("UpdatedAt")
.HasColumnType("datetime2")
.HasComment("수정 일시");
b.HasKey("ID");
b.HasIndex("EngName")
.IsUnique();
b.HasIndex("IsActive");
b.HasIndex("KorName")
.IsUnique();
b.HasIndex("Order");
b.HasIndex("Order", "IsActive");
b.ToTable("MemberGrade", null, t =>
{
t.HasComment("회원 등급");
});
});
modelBuilder.Entity("Domain.Entities.Members.MemberStats", b =>
{
b.Property("MemberID")
.HasColumnType("int")
.HasComment("회원 ID");
b.Property("AttendanceCount")
.HasColumnType("bigint")
.HasComment("출석");
b.Property("BookmarkGivenCount")
.HasColumnType("bigint")
.HasComment("즐겨찾기 글 수");
b.Property("CommentCount")
.HasColumnType("bigint")
.HasComment("작성 댓글");
b.Property("Exp")
.HasColumnType("bigint")
.HasComment("경험치");
b.Property("FollowerCount")
.HasColumnType("bigint")
.HasComment("구독자");
b.Property("FollowingCount")
.HasColumnType("bigint")
.HasComment("구독 중");
b.Property("LikeGivenCount")
.HasColumnType("bigint")
.HasComment("누른 좋아요 수");
b.Property("LikeReceivedCount")
.HasColumnType("bigint")
.HasComment("받은 좋아요 수");
b.Property("LoginCount")
.HasColumnType("bigint")
.HasComment("로그인");
b.Property("PaymentCount")
.HasColumnType("bigint")
.HasComment("결제 횟수");
b.Property("PostCount")
.HasColumnType("bigint")
.HasComment("작성 게시글");
b.Property("ReportedCount")
.HasColumnType("bigint")
.HasComment("신고 당한 횟수");
b.Property("RowVersion")
.IsConcurrencyToken()
.IsRequired()
.ValueGeneratedOnAddOrUpdate()
.HasColumnType("rowversion")
.HasComment("동시성");
b.Property("SuspensionCount")
.HasColumnType("int")
.HasComment("정지 횟수");
b.Property("TotalCanceledAmount")
.HasColumnType("bigint")
.HasComment("누적 취소/환불 금액");
b.Property("TotalPaidAmount")
.HasColumnType("bigint")
.HasComment("누적 결제 금액");
b.Property("WarningCount")
.HasColumnType("int")
.HasComment("경고 횟수");
b.HasKey("MemberID");
b.ToTable("MemberStats", null, t =>
{
t.HasComment("회원 활동 집계");
});
});
modelBuilder.Entity("Domain.Entities.Page.Banner.BannerItem", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("DesktopImage")
.HasMaxLength(1024)
.HasColumnType("nvarchar(1024)")
.HasComment("이미지(Desktop)");
b.Property("EndAt")
.HasColumnType("datetime2")
.HasComment("사용 기간 - 종료");
b.Property("IsActive")
.HasColumnType("bit")
.HasComment("사용 여부");
b.Property("Link")
.HasMaxLength(255)
.HasColumnType("nvarchar(255)")
.HasComment("주소");
b.Property("MobileImage")
.HasMaxLength(1024)
.HasColumnType("nvarchar(1024)")
.HasComment("이미지(Mobile)");
b.Property("Order")
.HasColumnType("smallint")
.HasComment("순서");
b.Property("PositionID")
.HasColumnType("int")
.HasComment("배너 위치 ID");
b.Property("StartAt")
.HasColumnType("datetime2")
.HasComment("사용 기간 - 시작");
b.Property("Subject")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("nvarchar(255)")
.HasComment("배너 명");
b.Property("UpdatedAt")
.HasColumnType("datetime2")
.HasComment("수정 일시");
b.HasKey("ID");
b.HasIndex("IsActive");
b.HasIndex("Order");
b.HasIndex("PositionID");
b.HasIndex("PositionID", "Order", "IsActive");
b.ToTable("BannerItem", null, t =>
{
t.HasComment("배너 아이템");
});
});
modelBuilder.Entity("Domain.Entities.Page.Banner.BannerPosition", 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("Subject")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("nvarchar(255)")
.HasComment("위치 명");
b.Property("UpdatedAt")
.HasColumnType("datetime2")
.HasComment("수정 일시");
b.HasKey("ID");
b.HasIndex("Code")
.IsUnique();
b.HasIndex("IsActive");
b.HasIndex("Code", "IsActive");
b.ToTable("BannerPosition", null, t =>
{
t.HasComment("배너 위치");
});
});
modelBuilder.Entity("Domain.Entities.Page.Document", 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("Content")
.HasMaxLength(5000)
.HasColumnType("nvarchar(max)")
.HasComment("내용");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("IsActive")
.HasColumnType("bit")
.HasComment("사용 여부");
b.Property("Subject")
.IsRequired()
.HasMaxLength(120)
.HasColumnType("nvarchar(120)")
.HasComment("제목");
b.Property("UpdatedAt")
.HasColumnType("datetime2")
.HasComment("수정 일시");
b.Property("Views")
.HasColumnType("int")
.HasComment("조회 수");
b.HasKey("ID");
b.HasIndex("Code")
.IsUnique();
b.HasIndex("IsActive");
b.HasIndex("Subject");
b.HasIndex("Code", "IsActive");
b.ToTable("Document", null, t =>
{
t.HasComment("문서");
});
});
modelBuilder.Entity("Domain.Entities.Page.Faq.FaqCategory", 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("Order")
.HasColumnType("smallint")
.HasComment("순서");
b.Property("Subject")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("nvarchar(255)")
.HasComment("분류 명");
b.Property("UpdatedAt")
.HasColumnType("datetime2")
.HasComment("수정 일시");
b.HasKey("ID");
b.HasIndex("Code")
.IsUnique();
b.HasIndex("Order", "IsActive");
b.HasIndex("Code", "Order", "IsActive");
b.ToTable("FaqCategory", null, t =>
{
t.HasComment("FAQ 분류");
});
});
modelBuilder.Entity("Domain.Entities.Page.Faq.FaqItem", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("Answer")
.HasMaxLength(4000)
.HasColumnType("nvarchar(4000)")
.HasComment("답변");
b.Property("CategoryID")
.HasColumnType("int")
.HasComment("분류 ID");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("IsActive")
.HasColumnType("bit")
.HasComment("사용 여부");
b.Property("Order")
.HasColumnType("smallint")
.HasComment("순서");
b.Property("Question")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("nvarchar(255)")
.HasComment("질문");
b.Property("UpdatedAt")
.HasColumnType("datetime2")
.HasComment("수정 일시");
b.HasKey("ID");
b.HasIndex("CategoryID");
b.HasIndex("IsActive");
b.HasIndex("Order");
b.HasIndex("Order", "IsActive");
b.HasIndex("CategoryID", "Order", "IsActive");
b.ToTable("FaqItem", null, t =>
{
t.HasComment("FAQ 목록");
});
});
modelBuilder.Entity("Domain.Entities.Page.Popup", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasComment("PK");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("Content")
.HasMaxLength(4000)
.HasColumnType("nvarchar(4000)")
.HasComment("내용");
b.Property("CreatedAt")
.HasColumnType("datetime2")
.HasComment("등록 일시");
b.Property("EndAt")
.HasColumnType("datetime2")
.HasComment("사용 기간 - 종료");
b.Property("IsActive")
.HasColumnType("bit")
.HasComment("사용 여부");
b.Property("Link")
.HasMaxLength(255)
.HasColumnType("nvarchar(255)")
.HasComment("주소");
b.Property("Order")
.HasColumnType("smallint")
.HasComment("순서");
b.Property("StartAt")
.HasColumnType("datetime2")
.HasComment("사용 기간 - 시작");
b.Property("Subject")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("nvarchar(255)")
.HasComment("제목");
b.Property("UpdatedAt")
.HasColumnType("datetime2")
.HasComment("수정 일시");
b.HasKey("ID");
b.HasIndex("Order");
b.HasIndex("Order", "IsActive");
b.HasIndex("StartAt", "EndAt", "Order", "IsActive");
b.ToTable("Popup", null, t =>
{
t.HasComment("팝업");
});
});
modelBuilder.Entity("Domain.Entities.Wallets.Wallet", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("MemberID")
.HasColumnType("int");
b.Property("UpdatedAt")
.HasColumnType("datetime2");
b.Property("WalletKey")
.HasColumnType("uniqueidentifier");
b.HasKey("ID");
b.HasIndex("MemberID")
.IsUnique();
b.HasIndex("WalletKey")
.IsUnique();
b.ToTable("Wallet", null, t =>
{
t.HasComment("회원 지갑");
});
});
modelBuilder.Entity("Domain.Entities.Wallets.WalletBalance", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("Type")
.HasColumnType("int");
b.Property("WalletKey")
.HasColumnType("uniqueidentifier");
b.HasKey("ID");
b.HasIndex("WalletKey", "Type")
.IsUnique();
b.ToTable("WalletBalance", null, t =>
{
t.HasComment("회원 지갑 잔액");
});
});
modelBuilder.Entity("Domain.Entities.Wallets.WalletTransaction", b =>
{
b.Property("ID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
b.Property("BalanceType")
.HasColumnType("int");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("Memo")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property("Reason")
.IsRequired()
.HasMaxLength(1000)
.HasColumnType("nvarchar(1000)");
b.Property("RefID")
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property("TxType")
.HasColumnType("int");
b.Property("UserID")
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property("WalletKey")
.HasColumnType("uniqueidentifier");
b.HasKey("ID");
b.HasIndex("CreatedAt");
b.HasIndex("WalletKey");
b.HasIndex("WalletKey", "CreatedAt");
b.ToTable("WalletTransaction", null, t =>
{
t.HasComment("회원 거래 장부");
});
});
modelBuilder.Entity("Domain.Entities.Common.Config", b =>
{
b.OwnsOne("Domain.Entities.Common.AccountConfig", "Account", b1 =>
{
b1.Property("ConfigID")
.HasColumnType("int");
b1.Property("ChangeEmailDay")
.HasColumnType("int")
.HasColumnName("Account_ChangeEmailDay")
.HasComment("이메일 갱신 주기(일)");
b1.Property("ChangeIntroDay")
.HasColumnType("int")
.HasColumnName("Account_ChangeIntroDay")
.HasComment("자기소개 갱신 주기(일)");
b1.Property("ChangeNameDay")
.HasColumnType("int")
.HasColumnName("Account_ChangeNameDay")
.HasComment("별명 갱신 주기(일)");
b1.Property("ChangePasswordDay")
.HasColumnType("int")
.HasColumnName("Account_ChangePasswordDay")
.HasComment("비밀번호 갱신 주기(일)");
b1.Property("ChangeSummaryDay")
.HasColumnType("int")
.HasColumnName("Account_ChangeSummaryDay")
.HasComment("한마디 갱신 주기(일)");
b1.Property("DeniedEmailList")
.HasColumnType("nvarchar(max)")
.HasColumnName("Account_DeniedEmailList")
.HasComment("금지 이메일");
b1.Property("DeniedNameList")
.HasColumnType("nvarchar(max)")
.HasColumnName("Account_DeniedNameList")
.HasComment("금지 별명");
b1.Property("IsRegisterBlock")
.HasColumnType("bit")
.HasColumnName("Account_IsRegisterBlock")
.HasComment("회원가입 차단");
b1.Property("IsRegisterEmailAuth")
.HasColumnType("bit")
.HasColumnName("Account_IsRegisterEmailAuth")
.HasComment("회원가입 시 이메일 인증");
b1.Property("MaxLoginTryCount")
.HasColumnType("int")
.HasColumnName("Account_MaxLoginTryCount")
.HasComment("로그인 시도 제한 횟수");
b1.Property("MaxLoginTryLimitSecond")
.HasColumnType("int")
.HasColumnName("Account_MaxLoginTryLimitSecond")
.HasComment("로그인 시도 제한 시간(초)");
b1.Property("PasswordMinLength")
.HasColumnType("int")
.HasColumnName("Account_PasswordMinLength")
.HasComment("비밀번호 최소 길이");
b1.Property("PasswordNumbersLength")
.HasColumnType("int")
.HasColumnName("Account_PasswordNumbersLength")
.HasComment("비밀번호 최소 숫자 수");
b1.Property("PasswordSpecialcharsLength")
.HasColumnType("int")
.HasColumnName("Account_PasswordSpecialcharsLength")
.HasComment("비밀번호 최소 특수문자 수");
b1.Property("PasswordUppercaseLength")
.HasColumnType("int")
.HasColumnName("Account_PasswordUppercaseLength")
.HasComment("비밀번호 최소 대문자 수");
b1.HasKey("ConfigID");
b1.ToTable("Config");
b1.WithOwner()
.HasForeignKey("ConfigID");
});
b.OwnsOne("Domain.Entities.Common.BasicConfig", "Basic", b1 =>
{
b1.Property("ConfigID")
.HasColumnType("int");
b1.Property("AdminWhiteIPList")
.HasMaxLength(1000)
.HasColumnType("nvarchar(1000)")
.HasColumnName("Basic_AdminWhiteIPList")
.HasComment("관리자단 접근 가능 IP");
b1.Property