using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Infrastructure.Migrations.AppDb
{
///
public partial class ReplaceDanalWithTossPayments : Migration
{
///
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "DanalCancel");
migrationBuilder.DropTable(
name: "DanalConfirm");
migrationBuilder.DropTable(
name: "DanalLog");
migrationBuilder.DropColumn(
name: "External_DanalLiveClientKeyEnc",
table: "Config");
migrationBuilder.DropColumn(
name: "External_DanalLiveCpid",
table: "Config");
migrationBuilder.DropColumn(
name: "Payment_DanalCardFeeAmount",
table: "Config");
migrationBuilder.DropColumn(
name: "Payment_DanalCardFeeRate",
table: "Config");
migrationBuilder.DropColumn(
name: "Payment_DanalKakaoPayFeeAmount",
table: "Config");
migrationBuilder.DropColumn(
name: "Payment_DanalKakaoPayFeeRate",
table: "Config");
migrationBuilder.DropColumn(
name: "Payment_DanalMobileFeeAmount",
table: "Config");
migrationBuilder.DropColumn(
name: "Payment_DanalMobileFeeRate",
table: "Config");
migrationBuilder.DropColumn(
name: "Payment_DanalNaverPayFeeAmount",
table: "Config");
migrationBuilder.DropColumn(
name: "Payment_DanalNaverPayFeeRate",
table: "Config");
migrationBuilder.DropColumn(
name: "Payment_DanalTransferFeeAmount",
table: "Config");
migrationBuilder.DropColumn(
name: "Payment_DanalTransferFeeRate",
table: "Config");
migrationBuilder.DropColumn(
name: "Payment_DanalVbankFeeAmount",
table: "Config");
migrationBuilder.DropColumn(
name: "Payment_DanalVbankFeeRate",
table: "Config");
migrationBuilder.DropColumn(
name: "Payment_IsCardEnabled",
table: "Config");
migrationBuilder.DropColumn(
name: "Payment_IsKakaoPayEnabled",
table: "Config");
migrationBuilder.DropColumn(
name: "Payment_IsMobileEnabled",
table: "Config");
migrationBuilder.DropColumn(
name: "Payment_IsNaverPayEnabled",
table: "Config");
migrationBuilder.DropColumn(
name: "Payment_IsTransferEnabled",
table: "Config");
migrationBuilder.DropColumn(
name: "Payment_IsVirtualAccountEnabled",
table: "Config");
migrationBuilder.RenameColumn(
name: "External_DanalTestSecretKeyEnc",
table: "Config",
newName: "External_TossTestSecretKeyEnc");
migrationBuilder.RenameColumn(
name: "External_DanalTestCpid",
table: "Config",
newName: "External_TossTestClientKeyEnc");
migrationBuilder.RenameColumn(
name: "External_DanalTestClientKeyEnc",
table: "Config",
newName: "External_TossPayMode");
migrationBuilder.RenameColumn(
name: "External_DanalPayMode",
table: "Config",
newName: "External_TossLiveSecretKeyEnc");
migrationBuilder.RenameColumn(
name: "External_DanalLiveSecretKeyEnc",
table: "Config",
newName: "External_TossLiveClientKeyEnc");
migrationBuilder.AddColumn(
name: "PaymentCustomerKey",
table: "Member",
type: "uniqueidentifier",
nullable: true);
migrationBuilder.CreateTable(
name: "TossCancel",
columns: table => new
{
ID = table.Column(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
MemberID = table.Column(type: "int", nullable: false),
PaymentOrderID = table.Column(type: "int", nullable: false),
PaymentKey = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false),
OrderID = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false),
CancelAmount = table.Column(type: "int", nullable: false),
CancelReason = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false),
CancelRequester = table.Column(type: "nvarchar(20)", maxLength: 20, nullable: true),
ResponseCode = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
ResponseMessage = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: true),
TransactionKey = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
Status = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: true),
CanceledAt = table.Column(type: "datetime2", nullable: true),
RawResponse = table.Column(type: "nvarchar(max)", nullable: true),
CreatedAt = table.Column(type: "datetime2", nullable: false),
UpdatedAt = table.Column(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_TossCancel", x => x.ID);
table.ForeignKey(
name: "FK_TossCancel_Member_MemberID",
column: x => x.MemberID,
principalTable: "Member",
principalColumn: "ID");
table.ForeignKey(
name: "FK_TossCancel_PaymentOrder_PaymentOrderID",
column: x => x.PaymentOrderID,
principalTable: "PaymentOrder",
principalColumn: "ID");
},
comment: "토스페이먼츠 결제 취소 (요청+응답)");
migrationBuilder.CreateTable(
name: "TossConfirm",
columns: table => new
{
ID = table.Column(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
MemberID = table.Column(type: "int", nullable: false),
PaymentOrderID = table.Column(type: "int", nullable: false),
PaymentKey = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false),
OrderID = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false),
Amount = table.Column(type: "int", nullable: false),
ResponseCode = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
ResponseMessage = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: true),
Status = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: true),
Method = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: true),
TotalAmount = table.Column(type: "int", nullable: true),
ApprovedAt = table.Column(type: "datetime2", nullable: true),
ReceiptUrl = table.Column(type: "nvarchar(300)", maxLength: 300, nullable: true),
RawResponse = table.Column(type: "nvarchar(max)", nullable: true),
CreatedAt = table.Column(type: "datetime2", nullable: false),
UpdatedAt = table.Column(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_TossConfirm", x => x.ID);
table.ForeignKey(
name: "FK_TossConfirm_Member_MemberID",
column: x => x.MemberID,
principalTable: "Member",
principalColumn: "ID");
table.ForeignKey(
name: "FK_TossConfirm_PaymentOrder_PaymentOrderID",
column: x => x.PaymentOrderID,
principalTable: "PaymentOrder",
principalColumn: "ID");
},
comment: "토스페이먼츠 결제 승인 (요청+응답)");
migrationBuilder.CreateTable(
name: "TossLog",
columns: table => new
{
ID = table.Column(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
MemberID = table.Column(type: "int", nullable: true),
LogType = table.Column(type: "int", nullable: false),
Code = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false),
Message = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: false),
PaymentKey = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true),
OrderID = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
ExtraData = table.Column(type: "nvarchar(4000)", maxLength: 4000, nullable: true),
CreatedAt = table.Column(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_TossLog", x => x.ID);
table.ForeignKey(
name: "FK_TossLog_Member_MemberID",
column: x => x.MemberID,
principalTable: "Member",
principalColumn: "ID");
},
comment: "토스페이먼츠 결제 에러/실패/웹훅/대사 로그");
migrationBuilder.CreateIndex(
name: "IX_TossCancel_MemberID",
table: "TossCancel",
column: "MemberID");
migrationBuilder.CreateIndex(
name: "IX_TossCancel_OrderID",
table: "TossCancel",
column: "OrderID");
migrationBuilder.CreateIndex(
name: "IX_TossCancel_PaymentKey",
table: "TossCancel",
column: "PaymentKey");
migrationBuilder.CreateIndex(
name: "IX_TossCancel_PaymentOrderID",
table: "TossCancel",
column: "PaymentOrderID");
migrationBuilder.CreateIndex(
name: "IX_TossCancel_TransactionKey",
table: "TossCancel",
column: "TransactionKey");
migrationBuilder.CreateIndex(
name: "IX_TossConfirm_MemberID",
table: "TossConfirm",
column: "MemberID");
migrationBuilder.CreateIndex(
name: "IX_TossConfirm_OrderID",
table: "TossConfirm",
column: "OrderID",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_TossConfirm_PaymentKey",
table: "TossConfirm",
column: "PaymentKey",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_TossConfirm_PaymentOrderID",
table: "TossConfirm",
column: "PaymentOrderID");
migrationBuilder.CreateIndex(
name: "IX_TossConfirm_Status",
table: "TossConfirm",
column: "Status");
migrationBuilder.CreateIndex(
name: "IX_TossLog_Code",
table: "TossLog",
column: "Code");
migrationBuilder.CreateIndex(
name: "IX_TossLog_LogType",
table: "TossLog",
column: "LogType");
migrationBuilder.CreateIndex(
name: "IX_TossLog_MemberID",
table: "TossLog",
column: "MemberID");
migrationBuilder.CreateIndex(
name: "IX_TossLog_OrderID",
table: "TossLog",
column: "OrderID");
migrationBuilder.CreateIndex(
name: "IX_TossLog_PaymentKey",
table: "TossLog",
column: "PaymentKey");
}
///
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "TossCancel");
migrationBuilder.DropTable(
name: "TossConfirm");
migrationBuilder.DropTable(
name: "TossLog");
migrationBuilder.DropColumn(
name: "PaymentCustomerKey",
table: "Member");
migrationBuilder.RenameColumn(
name: "External_TossTestSecretKeyEnc",
table: "Config",
newName: "External_DanalTestSecretKeyEnc");
migrationBuilder.RenameColumn(
name: "External_TossTestClientKeyEnc",
table: "Config",
newName: "External_DanalTestCpid");
migrationBuilder.RenameColumn(
name: "External_TossPayMode",
table: "Config",
newName: "External_DanalTestClientKeyEnc");
migrationBuilder.RenameColumn(
name: "External_TossLiveSecretKeyEnc",
table: "Config",
newName: "External_DanalPayMode");
migrationBuilder.RenameColumn(
name: "External_TossLiveClientKeyEnc",
table: "Config",
newName: "External_DanalLiveSecretKeyEnc");
migrationBuilder.AddColumn(
name: "External_DanalLiveClientKeyEnc",
table: "Config",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn(
name: "External_DanalLiveCpid",
table: "Config",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn(
name: "Payment_DanalCardFeeAmount",
table: "Config",
type: "decimal(18,0)",
precision: 18,
nullable: true,
comment: "신용카드 수수료(원)");
migrationBuilder.AddColumn(
name: "Payment_DanalCardFeeRate",
table: "Config",
type: "decimal(5,2)",
precision: 5,
scale: 2,
nullable: true,
comment: "신용카드 수수료(%)");
migrationBuilder.AddColumn(
name: "Payment_DanalKakaoPayFeeAmount",
table: "Config",
type: "decimal(18,0)",
precision: 18,
nullable: true,
comment: "카카오페이 수수료(원)");
migrationBuilder.AddColumn(
name: "Payment_DanalKakaoPayFeeRate",
table: "Config",
type: "decimal(5,2)",
precision: 5,
scale: 2,
nullable: true,
comment: "카카오페이 수수료(%)");
migrationBuilder.AddColumn(
name: "Payment_DanalMobileFeeAmount",
table: "Config",
type: "decimal(18,0)",
precision: 18,
nullable: true,
comment: "휴대폰 수수료(원)");
migrationBuilder.AddColumn(
name: "Payment_DanalMobileFeeRate",
table: "Config",
type: "decimal(5,2)",
precision: 5,
scale: 2,
nullable: true,
comment: "휴대폰 수수료(%)");
migrationBuilder.AddColumn(
name: "Payment_DanalNaverPayFeeAmount",
table: "Config",
type: "decimal(18,0)",
precision: 18,
nullable: true,
comment: "네이버페이 수수료(원)");
migrationBuilder.AddColumn(
name: "Payment_DanalNaverPayFeeRate",
table: "Config",
type: "decimal(5,2)",
precision: 5,
scale: 2,
nullable: true,
comment: "네이버페이 수수료(%)");
migrationBuilder.AddColumn(
name: "Payment_DanalTransferFeeAmount",
table: "Config",
type: "decimal(18,0)",
precision: 18,
nullable: true,
comment: "계좌이체 수수료(원)");
migrationBuilder.AddColumn(
name: "Payment_DanalTransferFeeRate",
table: "Config",
type: "decimal(5,2)",
precision: 5,
scale: 2,
nullable: true,
comment: "계좌이체 수수료(%)");
migrationBuilder.AddColumn(
name: "Payment_DanalVbankFeeAmount",
table: "Config",
type: "decimal(18,0)",
precision: 18,
nullable: true,
comment: "가상계좌 수수료(원)");
migrationBuilder.AddColumn(
name: "Payment_DanalVbankFeeRate",
table: "Config",
type: "decimal(5,2)",
precision: 5,
scale: 2,
nullable: true,
comment: "가상계좌 수수료(%)");
migrationBuilder.AddColumn(
name: "Payment_IsCardEnabled",
table: "Config",
type: "bit",
nullable: false,
defaultValue: false,
comment: "신용카드 사용 여부");
migrationBuilder.AddColumn(
name: "Payment_IsKakaoPayEnabled",
table: "Config",
type: "bit",
nullable: false,
defaultValue: false,
comment: "카카오페이 사용 여부");
migrationBuilder.AddColumn(
name: "Payment_IsMobileEnabled",
table: "Config",
type: "bit",
nullable: false,
defaultValue: false,
comment: "휴대폰 사용 여부");
migrationBuilder.AddColumn(
name: "Payment_IsNaverPayEnabled",
table: "Config",
type: "bit",
nullable: false,
defaultValue: false,
comment: "네이버페이 사용 여부");
migrationBuilder.AddColumn(
name: "Payment_IsTransferEnabled",
table: "Config",
type: "bit",
nullable: false,
defaultValue: false,
comment: "계좌이체 사용 여부");
migrationBuilder.AddColumn(
name: "Payment_IsVirtualAccountEnabled",
table: "Config",
type: "bit",
nullable: false,
defaultValue: false,
comment: "가상계좌 사용 여부");
migrationBuilder.CreateTable(
name: "DanalCancel",
columns: table => new
{
ID = table.Column(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
MemberID = table.Column(type: "int", nullable: false),
PaymentOrderID = table.Column(type: "int", nullable: false),
Amount = table.Column(type: "int", nullable: false),
ApprovalDateTime = table.Column(type: "nvarchar(15)", maxLength: 15, nullable: true),
Balance = table.Column(type: "int", nullable: true),
CancelReason = table.Column(type: "nvarchar(255)", maxLength: 255, nullable: true),
CancelRequester = table.Column(type: "nvarchar(20)", maxLength: 20, nullable: true),
CancelType = table.Column(type: "int", nullable: false),
CancelledAmount = table.Column(type: "int", nullable: true),
CreatedAt = table.Column(type: "datetime2", nullable: false),
MerchantID = table.Column(type: "nvarchar(20)", maxLength: 20, nullable: false),
Method = table.Column(type: "int", nullable: false),
OrderID = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false),
OriginalTransactionID = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: true),
RemainedAmount = table.Column(type: "int", nullable: true),
ResponseCode = table.Column(type: "nvarchar(20)", maxLength: 20, nullable: true),
ResponseMessage = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: true),
TransDate = table.Column(type: "nvarchar(15)", maxLength: 15, nullable: true),
TransTime = table.Column(type: "nvarchar(15)", maxLength: 15, nullable: true),
TransactionID = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false),
UpdatedAt = table.Column(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_DanalCancel", x => x.ID);
table.ForeignKey(
name: "FK_DanalCancel_Member_MemberID",
column: x => x.MemberID,
principalTable: "Member",
principalColumn: "ID");
table.ForeignKey(
name: "FK_DanalCancel_PaymentOrder_PaymentOrderID",
column: x => x.PaymentOrderID,
principalTable: "PaymentOrder",
principalColumn: "ID");
},
comment: "다날 결제 취소 (요청+응답)");
migrationBuilder.CreateTable(
name: "DanalConfirm",
columns: table => new
{
ID = table.Column(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
MemberID = table.Column(type: "int", nullable: false),
PaymentOrderID = table.Column(type: "int", nullable: false),
AccountNumber = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true),
Amount = table.Column(type: "int", nullable: false),
ApprovalDateTime = table.Column(type: "nvarchar(15)", maxLength: 15, nullable: true),
ApproveNo = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true),
AuthKey = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true),
BankCode = table.Column(type: "nvarchar(3)", maxLength: 3, nullable: true),
BankName = table.Column(type: "nvarchar(20)", maxLength: 20, nullable: true),
CardCode = table.Column(type: "nvarchar(20)", maxLength: 20, nullable: true),
CardName = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true),
CardNo = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
CertificateToken = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true),
CreatedAt = table.Column(type: "datetime2", nullable: false),
DiscountAmount = table.Column(type: "int", nullable: true),
ExpireDate = table.Column(type: "nvarchar(10)", maxLength: 10, nullable: true),
ExpireTime = table.Column(type: "nvarchar(15)", maxLength: 15, nullable: true),
InstallmentMonths = table.Column(type: "tinyint", nullable: true),
MerchantID = table.Column(type: "nvarchar(20)", maxLength: 20, nullable: false),
Method = table.Column(type: "int", nullable: false),
OrderID = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false),
OrderName = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: true),
ResponseCode = table.Column(type: "nvarchar(20)", maxLength: 20, nullable: true),
ResponseMessage = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: true),
TotalAmount = table.Column(type: "int", nullable: true),
TransDate = table.Column(type: "nvarchar(8)", maxLength: 8, nullable: true),
TransTime = table.Column(type: "nvarchar(20)", maxLength: 20, nullable: true),
TransactionID = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false),
UpdatedAt = table.Column(type: "datetime2", nullable: true),
UseCashReceipt = table.Column(type: "nvarchar(1)", maxLength: 1, nullable: true),
UserEmail = table.Column(type: "nvarchar(60)", maxLength: 60, nullable: true),
UserId = table.Column(type: "nvarchar(20)", maxLength: 20, nullable: true),
UserName = table.Column(type: "nvarchar(20)", maxLength: 20, nullable: true),
VirtualAccountNumber = table.Column(type: "nvarchar(30)", maxLength: 30, nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_DanalConfirm", x => x.ID);
table.ForeignKey(
name: "FK_DanalConfirm_Member_MemberID",
column: x => x.MemberID,
principalTable: "Member",
principalColumn: "ID");
table.ForeignKey(
name: "FK_DanalConfirm_PaymentOrder_PaymentOrderID",
column: x => x.PaymentOrderID,
principalTable: "PaymentOrder",
principalColumn: "ID");
},
comment: "다날 결제 승인 (요청+응답)");
migrationBuilder.CreateTable(
name: "DanalLog",
columns: table => new
{
ID = table.Column(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
MemberID = table.Column(type: "int", nullable: false),
Code = table.Column(type: "nvarchar(20)", maxLength: 20, nullable: false),
CreatedAt = table.Column(type: "datetime2", nullable: false),
ExtraData = table.Column(type: "nvarchar(4000)", maxLength: 4000, nullable: true),
LogType = table.Column(type: "int", nullable: false),
Message = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: false),
OrderID = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
TransactionID = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_DanalLog", x => x.ID);
table.ForeignKey(
name: "FK_DanalLog_Member_MemberID",
column: x => x.MemberID,
principalTable: "Member",
principalColumn: "ID");
},
comment: "다날 결제 에러/실패/웹훅 로그");
migrationBuilder.CreateIndex(
name: "IX_DanalCancel_CancelType",
table: "DanalCancel",
column: "CancelType");
migrationBuilder.CreateIndex(
name: "IX_DanalCancel_MemberID",
table: "DanalCancel",
column: "MemberID");
migrationBuilder.CreateIndex(
name: "IX_DanalCancel_Method",
table: "DanalCancel",
column: "Method");
migrationBuilder.CreateIndex(
name: "IX_DanalCancel_OrderID",
table: "DanalCancel",
column: "OrderID");
migrationBuilder.CreateIndex(
name: "IX_DanalCancel_PaymentOrderID",
table: "DanalCancel",
column: "PaymentOrderID");
migrationBuilder.CreateIndex(
name: "IX_DanalCancel_TransactionID",
table: "DanalCancel",
column: "TransactionID");
migrationBuilder.CreateIndex(
name: "IX_DanalConfirm_MemberID",
table: "DanalConfirm",
column: "MemberID");
migrationBuilder.CreateIndex(
name: "IX_DanalConfirm_Method",
table: "DanalConfirm",
column: "Method");
migrationBuilder.CreateIndex(
name: "IX_DanalConfirm_OrderID",
table: "DanalConfirm",
column: "OrderID",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_DanalConfirm_PaymentOrderID",
table: "DanalConfirm",
column: "PaymentOrderID");
migrationBuilder.CreateIndex(
name: "IX_DanalConfirm_TransactionID",
table: "DanalConfirm",
column: "TransactionID",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_DanalLog_Code",
table: "DanalLog",
column: "Code");
migrationBuilder.CreateIndex(
name: "IX_DanalLog_LogType",
table: "DanalLog",
column: "LogType");
migrationBuilder.CreateIndex(
name: "IX_DanalLog_MemberID",
table: "DanalLog",
column: "MemberID");
migrationBuilder.CreateIndex(
name: "IX_DanalLog_OrderID",
table: "DanalLog",
column: "OrderID");
migrationBuilder.CreateIndex(
name: "IX_DanalLog_TransactionID",
table: "DanalLog",
column: "TransactionID");
}
}
}