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"); } } }