| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599 |
- using System;
- using Microsoft.EntityFrameworkCore.Migrations;
- #nullable disable
- namespace Infrastructure.Migrations.AppDb
- {
- /// <inheritdoc />
- public partial class AddStoreSchema : Migration
- {
- /// <inheritdoc />
- protected override void Up(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.AddColumn<int>(
- name: "DonationAmount",
- table: "WithdrawalRequest",
- type: "int",
- nullable: false,
- defaultValue: 0,
- comment: "후원 수익(Donation) 잔액에서 차감되는 금액");
- migrationBuilder.AddColumn<int>(
- name: "StoreRevenueAmount",
- table: "WithdrawalRequest",
- type: "int",
- nullable: false,
- defaultValue: 0,
- comment: "상품 판매 수익(StoreRevenue) 잔액에서 차감되는 금액");
- migrationBuilder.CreateTable(
- name: "Game",
- columns: table => new
- {
- ID = table.Column<int>(type: "int", nullable: false)
- .Annotation("SqlServer:Identity", "1, 1"),
- Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false, comment: "게임 이름"),
- Publisher = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false, comment: "게임사/퍼블리셔"),
- Thumbnail = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
- Description = table.Column<string>(type: "nvarchar(2000)", maxLength: 2000, nullable: true),
- CommissionRate = table.Column<decimal>(type: "decimal(5,2)", precision: 5, scale: 2, nullable: false, comment: "게임사 수익률(%)"),
- ChannelCommissionRate = table.Column<decimal>(type: "decimal(5,2)", precision: 5, scale: 2, nullable: false, comment: "후원 채널 보상률(%)"),
- IsActive = table.Column<bool>(type: "bit", nullable: false),
- Order = table.Column<int>(type: "int", nullable: false),
- CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
- UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_Game", x => x.ID);
- },
- comment: "상점 제휴 게임");
- migrationBuilder.CreateTable(
- name: "MemberAddress",
- columns: table => new
- {
- ID = table.Column<int>(type: "int", nullable: false)
- .Annotation("SqlServer:Identity", "1, 1"),
- MemberID = table.Column<int>(type: "int", nullable: false),
- IsDefault = table.Column<bool>(type: "bit", nullable: false),
- RecipientName_Encrypted = table.Column<string>(type: "nvarchar(max)", nullable: false, comment: "수령인명 (암호화)"),
- RecipientName_Hash = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false, comment: "수령인명 SHA-256 hex (검색용)"),
- Phone_Encrypted = table.Column<string>(type: "nvarchar(max)", nullable: false, comment: "연락처 (암호화)"),
- ZipCode = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: false),
- Address1_Encrypted = table.Column<string>(type: "nvarchar(max)", nullable: false, comment: "기본 주소 (암호화)"),
- Address2_Encrypted = table.Column<string>(type: "nvarchar(max)", nullable: false, comment: "상세 주소 (암호화)"),
- KeyVersion = table.Column<int>(type: "int", nullable: false, comment: "암호화 키 버전"),
- CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
- UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_MemberAddress", x => x.ID);
- table.ForeignKey(
- name: "FK_MemberAddress_Member_MemberID",
- column: x => x.MemberID,
- principalTable: "Member",
- principalColumn: "ID",
- onDelete: ReferentialAction.Cascade);
- },
- comment: "회원 배송 주소 (AES-GCM 암호화)");
- migrationBuilder.CreateTable(
- name: "Order",
- columns: table => new
- {
- ID = table.Column<int>(type: "int", nullable: false)
- .Annotation("SqlServer:Identity", "1, 1"),
- OrderNumber = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false, comment: "주문 번호 (UNIQUE)"),
- MemberID = table.Column<int>(type: "int", nullable: false),
- ChannelID = table.Column<int>(type: "int", nullable: true, comment: "후원 채널 (선택)"),
- TotalAmount = table.Column<int>(type: "int", nullable: false, comment: "총 결제 금액"),
- PlatformFeeAmount = table.Column<int>(type: "int", nullable: false, comment: "dpot 몫"),
- GameRevenueAmount = table.Column<int>(type: "int", nullable: false, comment: "게임사 정산 큐 적재 금액"),
- ChannelRewardAmount = table.Column<int>(type: "int", nullable: false, comment: "채널주 StoreRevenue 입금 금액"),
- Status = table.Column<int>(type: "int", nullable: false, comment: "주문 상태"),
- CancelReason = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
- RefundReason = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
- CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
- PaidAt = table.Column<DateTime>(type: "datetime2", nullable: true),
- RowVersion = table.Column<byte[]>(type: "rowversion", rowVersion: true, nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_Order", x => x.ID);
- table.ForeignKey(
- name: "FK_Order_Channel_ChannelID",
- column: x => x.ChannelID,
- principalTable: "Channel",
- principalColumn: "ID");
- table.ForeignKey(
- name: "FK_Order_Member_MemberID",
- column: x => x.MemberID,
- principalTable: "Member",
- principalColumn: "ID",
- onDelete: ReferentialAction.Restrict);
- },
- comment: "상점 주문 헤더");
- migrationBuilder.CreateTable(
- name: "GameSettlement",
- columns: table => new
- {
- ID = table.Column<int>(type: "int", nullable: false)
- .Annotation("SqlServer:Identity", "1, 1"),
- GameID = table.Column<int>(type: "int", nullable: false),
- Year = table.Column<int>(type: "int", nullable: false),
- Month = table.Column<int>(type: "int", nullable: false),
- TotalRevenueAmount = table.Column<int>(type: "int", nullable: false),
- OrderCount = table.Column<int>(type: "int", nullable: false),
- Status = table.Column<int>(type: "int", nullable: false, comment: "정산 상태 (1=Pending, 2=Settled)"),
- CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
- SettledAt = table.Column<DateTime>(type: "datetime2", nullable: true),
- SettledByAdminID = table.Column<int>(type: "int", nullable: true),
- AdminMemo = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_GameSettlement", x => x.ID);
- table.ForeignKey(
- name: "FK_GameSettlement_Game_GameID",
- column: x => x.GameID,
- principalTable: "Game",
- principalColumn: "ID",
- onDelete: ReferentialAction.Restrict);
- table.ForeignKey(
- name: "FK_GameSettlement_Member_SettledByAdminID",
- column: x => x.SettledByAdminID,
- principalTable: "Member",
- principalColumn: "ID");
- },
- comment: "게임사 월별 정산 큐");
- migrationBuilder.CreateTable(
- name: "Product",
- columns: table => new
- {
- ID = table.Column<int>(type: "int", nullable: false)
- .Annotation("SqlServer:Identity", "1, 1"),
- GameID = table.Column<int>(type: "int", nullable: false, comment: "게임 ID (필수)"),
- Name = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false, comment: "상품명"),
- Description = table.Column<string>(type: "nvarchar(2000)", maxLength: 2000, nullable: true),
- Thumbnail = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
- Type = table.Column<int>(type: "int", nullable: false, comment: "상품 유형 (1=Physical, 2=Digital)"),
- Price = table.Column<int>(type: "int", nullable: false, comment: "판매가 (KRW)"),
- Stock = table.Column<int>(type: "int", nullable: false, comment: "재고 (-1=무제한)"),
- IsActive = table.Column<bool>(type: "bit", nullable: false),
- Order = table.Column<int>(type: "int", nullable: false),
- SaleStartAt = table.Column<DateTime>(type: "datetime2", nullable: true),
- SaleEndAt = table.Column<DateTime>(type: "datetime2", nullable: true),
- CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
- UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
- RowVersion = table.Column<byte[]>(type: "rowversion", rowVersion: true, nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_Product", x => x.ID);
- table.ForeignKey(
- name: "FK_Product_Game_GameID",
- column: x => x.GameID,
- principalTable: "Game",
- principalColumn: "ID",
- onDelete: ReferentialAction.Restrict);
- },
- comment: "상점 상품");
- migrationBuilder.CreateTable(
- name: "OrderRefund",
- columns: table => new
- {
- ID = table.Column<int>(type: "int", nullable: false)
- .Annotation("SqlServer:Identity", "1, 1"),
- OrderID = table.Column<int>(type: "int", nullable: false),
- Type = table.Column<int>(type: "int", nullable: false, comment: "유형 (1=Cancel, 2=Return, 3=Exchange, 4=Refund)"),
- Status = table.Column<int>(type: "int", nullable: false, comment: "상태 (1=Requested, 2=Approved, 3=Rejected, 4=Completed)"),
- Amount = table.Column<int>(type: "int", nullable: false),
- Reason = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: false),
- AdminMemo = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
- AdminID = table.Column<int>(type: "int", nullable: true),
- RequestedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
- ResolvedAt = table.Column<DateTime>(type: "datetime2", nullable: true)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_OrderRefund", x => x.ID);
- table.ForeignKey(
- name: "FK_OrderRefund_Member_AdminID",
- column: x => x.AdminID,
- principalTable: "Member",
- principalColumn: "ID");
- table.ForeignKey(
- name: "FK_OrderRefund_Order_OrderID",
- column: x => x.OrderID,
- principalTable: "Order",
- principalColumn: "ID",
- onDelete: ReferentialAction.Cascade);
- },
- comment: "통합 환불 이력 (취소/반품/교환/환불)");
- migrationBuilder.CreateTable(
- name: "Shipment",
- columns: table => new
- {
- ID = table.Column<int>(type: "int", nullable: false)
- .Annotation("SqlServer:Identity", "1, 1"),
- OrderID = table.Column<int>(type: "int", nullable: false),
- RecipientName_Encrypted = table.Column<string>(type: "nvarchar(max)", nullable: false),
- Phone_Encrypted = table.Column<string>(type: "nvarchar(max)", nullable: false),
- ZipCode = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: false),
- Address1_Encrypted = table.Column<string>(type: "nvarchar(max)", nullable: false),
- Address2_Encrypted = table.Column<string>(type: "nvarchar(max)", nullable: false),
- KeyVersion = table.Column<int>(type: "int", nullable: false),
- Status = table.Column<int>(type: "int", nullable: false),
- Carrier = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
- TrackingNumber = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
- CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
- ShippedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
- DeliveredAt = table.Column<DateTime>(type: "datetime2", nullable: true)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_Shipment", x => x.ID);
- table.ForeignKey(
- name: "FK_Shipment_Order_OrderID",
- column: x => x.OrderID,
- principalTable: "Order",
- principalColumn: "ID",
- onDelete: ReferentialAction.Cascade);
- },
- comment: "배송 (주문 시점 주소 스냅샷, 암호화)");
- migrationBuilder.CreateTable(
- name: "Coupon",
- columns: table => new
- {
- ID = table.Column<int>(type: "int", nullable: false)
- .Annotation("SqlServer:Identity", "1, 1"),
- ProductID = table.Column<int>(type: "int", nullable: false),
- GameID = table.Column<int>(type: "int", nullable: false, comment: "게임 ID (필수)"),
- Name = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
- ExpiresAt = table.Column<DateTime>(type: "datetime2", nullable: true),
- UsagePolicy = table.Column<int>(type: "int", nullable: false),
- GeneratedCount = table.Column<int>(type: "int", nullable: false),
- UsedCount = table.Column<int>(type: "int", nullable: false),
- LowStockThreshold = table.Column<int>(type: "int", nullable: false, defaultValue: 10),
- CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
- UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_Coupon", x => x.ID);
- table.ForeignKey(
- name: "FK_Coupon_Game_GameID",
- column: x => x.GameID,
- principalTable: "Game",
- principalColumn: "ID",
- onDelete: ReferentialAction.Restrict);
- table.ForeignKey(
- name: "FK_Coupon_Product_ProductID",
- column: x => x.ProductID,
- principalTable: "Product",
- principalColumn: "ID",
- onDelete: ReferentialAction.Restrict);
- },
- comment: "쿠폰 메타 (코드 풀의 상위)");
- migrationBuilder.CreateTable(
- name: "CouponCode",
- columns: table => new
- {
- ID = table.Column<int>(type: "int", nullable: false)
- .Annotation("SqlServer:Identity", "1, 1"),
- CouponID = table.Column<int>(type: "int", nullable: false),
- Code = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false, comment: "코드 평문 (사용자 표시용)"),
- CodeHash = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false, comment: "SHA-256 hex (UNIQUE, 조회용)"),
- Status = table.Column<int>(type: "int", nullable: false, comment: "상태 (1=Available, 2=Reserved, 3=Issued, 4=Used)"),
- IssuedToMemberID = table.Column<int>(type: "int", nullable: true),
- IssuedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
- UsedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
- CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
- RowVersion = table.Column<byte[]>(type: "rowversion", rowVersion: true, nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_CouponCode", x => x.ID);
- table.ForeignKey(
- name: "FK_CouponCode_Coupon_CouponID",
- column: x => x.CouponID,
- principalTable: "Coupon",
- principalColumn: "ID",
- onDelete: ReferentialAction.Cascade);
- table.ForeignKey(
- name: "FK_CouponCode_Member_IssuedToMemberID",
- column: x => x.IssuedToMemberID,
- principalTable: "Member",
- principalColumn: "ID");
- },
- comment: "쿠폰 코드 풀 (Code 평문 + CodeHash SHA-256 hex)");
- migrationBuilder.CreateTable(
- name: "OrderItem",
- columns: table => new
- {
- ID = table.Column<int>(type: "int", nullable: false)
- .Annotation("SqlServer:Identity", "1, 1"),
- OrderID = table.Column<int>(type: "int", nullable: false),
- ProductID = table.Column<int>(type: "int", nullable: false),
- Quantity = table.Column<int>(type: "int", nullable: false),
- UnitPrice = table.Column<int>(type: "int", nullable: false, comment: "주문 시점 상품 단가 스냅샷"),
- IssuedCouponCodeID = table.Column<int>(type: "int", nullable: true, comment: "Digital 상품 발급 쿠폰 코드"),
- CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_OrderItem", x => x.ID);
- table.ForeignKey(
- name: "FK_OrderItem_CouponCode_IssuedCouponCodeID",
- column: x => x.IssuedCouponCodeID,
- principalTable: "CouponCode",
- principalColumn: "ID");
- table.ForeignKey(
- name: "FK_OrderItem_Order_OrderID",
- column: x => x.OrderID,
- principalTable: "Order",
- principalColumn: "ID",
- onDelete: ReferentialAction.Cascade);
- table.ForeignKey(
- name: "FK_OrderItem_Product_ProductID",
- column: x => x.ProductID,
- principalTable: "Product",
- principalColumn: "ID",
- onDelete: ReferentialAction.Restrict);
- },
- comment: "주문 라인");
- migrationBuilder.CreateTable(
- name: "MemberInventory",
- columns: table => new
- {
- ID = table.Column<int>(type: "int", nullable: false)
- .Annotation("SqlServer:Identity", "1, 1"),
- MemberID = table.Column<int>(type: "int", nullable: false),
- OrderItemID = table.Column<int>(type: "int", nullable: false),
- CouponCodeID = table.Column<int>(type: "int", nullable: false),
- AcquiredAt = table.Column<DateTime>(type: "datetime2", nullable: false),
- UsedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
- ExpiresAt = table.Column<DateTime>(type: "datetime2", nullable: true)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_MemberInventory", x => x.ID);
- table.ForeignKey(
- name: "FK_MemberInventory_CouponCode_CouponCodeID",
- column: x => x.CouponCodeID,
- principalTable: "CouponCode",
- principalColumn: "ID",
- onDelete: ReferentialAction.Restrict);
- table.ForeignKey(
- name: "FK_MemberInventory_Member_MemberID",
- column: x => x.MemberID,
- principalTable: "Member",
- principalColumn: "ID",
- onDelete: ReferentialAction.Cascade);
- table.ForeignKey(
- name: "FK_MemberInventory_OrderItem_OrderItemID",
- column: x => x.OrderItemID,
- principalTable: "OrderItem",
- principalColumn: "ID",
- onDelete: ReferentialAction.Restrict);
- },
- comment: "회원 보관함 (Digital 상품)");
- migrationBuilder.CreateIndex(
- name: "IX_Coupon_GameID",
- table: "Coupon",
- column: "GameID");
- migrationBuilder.CreateIndex(
- name: "IX_Coupon_ProductID",
- table: "Coupon",
- column: "ProductID");
- migrationBuilder.CreateIndex(
- name: "IX_CouponCode_CodeHash",
- table: "CouponCode",
- column: "CodeHash",
- unique: true);
- migrationBuilder.CreateIndex(
- name: "IX_CouponCode_CouponID_Status",
- table: "CouponCode",
- columns: new[] { "CouponID", "Status" });
- migrationBuilder.CreateIndex(
- name: "IX_CouponCode_IssuedToMemberID",
- table: "CouponCode",
- column: "IssuedToMemberID");
- migrationBuilder.CreateIndex(
- name: "IX_Game_IsActive_Order",
- table: "Game",
- columns: new[] { "IsActive", "Order" });
- migrationBuilder.CreateIndex(
- name: "IX_Game_Name",
- table: "Game",
- column: "Name",
- unique: true);
- migrationBuilder.CreateIndex(
- name: "IX_GameSettlement_GameID_Year_Month",
- table: "GameSettlement",
- columns: new[] { "GameID", "Year", "Month" },
- unique: true);
- migrationBuilder.CreateIndex(
- name: "IX_GameSettlement_SettledByAdminID",
- table: "GameSettlement",
- column: "SettledByAdminID");
- migrationBuilder.CreateIndex(
- name: "IX_GameSettlement_Year_Month_Status",
- table: "GameSettlement",
- columns: new[] { "Year", "Month", "Status" });
- migrationBuilder.CreateIndex(
- name: "IX_MemberAddress_MemberID_IsDefault",
- table: "MemberAddress",
- columns: new[] { "MemberID", "IsDefault" });
- migrationBuilder.CreateIndex(
- name: "IX_MemberAddress_RecipientName_Hash",
- table: "MemberAddress",
- column: "RecipientName_Hash");
- migrationBuilder.CreateIndex(
- name: "IX_MemberInventory_CouponCodeID",
- table: "MemberInventory",
- column: "CouponCodeID",
- unique: true);
- migrationBuilder.CreateIndex(
- name: "IX_MemberInventory_MemberID_UsedAt",
- table: "MemberInventory",
- columns: new[] { "MemberID", "UsedAt" });
- migrationBuilder.CreateIndex(
- name: "IX_MemberInventory_OrderItemID",
- table: "MemberInventory",
- column: "OrderItemID");
- migrationBuilder.CreateIndex(
- name: "IX_Order_ChannelID",
- table: "Order",
- column: "ChannelID");
- migrationBuilder.CreateIndex(
- name: "IX_Order_MemberID_Status_CreatedAt",
- table: "Order",
- columns: new[] { "MemberID", "Status", "CreatedAt" });
- migrationBuilder.CreateIndex(
- name: "IX_Order_OrderNumber",
- table: "Order",
- column: "OrderNumber",
- unique: true);
- migrationBuilder.CreateIndex(
- name: "IX_Order_Status_CreatedAt",
- table: "Order",
- columns: new[] { "Status", "CreatedAt" });
- migrationBuilder.CreateIndex(
- name: "IX_OrderItem_IssuedCouponCodeID",
- table: "OrderItem",
- column: "IssuedCouponCodeID");
- migrationBuilder.CreateIndex(
- name: "IX_OrderItem_OrderID",
- table: "OrderItem",
- column: "OrderID");
- migrationBuilder.CreateIndex(
- name: "IX_OrderItem_ProductID",
- table: "OrderItem",
- column: "ProductID");
- migrationBuilder.CreateIndex(
- name: "IX_OrderRefund_AdminID",
- table: "OrderRefund",
- column: "AdminID");
- migrationBuilder.CreateIndex(
- name: "IX_OrderRefund_OrderID_Status",
- table: "OrderRefund",
- columns: new[] { "OrderID", "Status" });
- migrationBuilder.CreateIndex(
- name: "IX_OrderRefund_Status",
- table: "OrderRefund",
- column: "Status");
- migrationBuilder.CreateIndex(
- name: "IX_Product_GameID_IsActive_Order",
- table: "Product",
- columns: new[] { "GameID", "IsActive", "Order" });
- migrationBuilder.CreateIndex(
- name: "IX_Product_IsActive_Type",
- table: "Product",
- columns: new[] { "IsActive", "Type" });
- migrationBuilder.CreateIndex(
- name: "IX_Shipment_OrderID",
- table: "Shipment",
- column: "OrderID",
- unique: true);
- migrationBuilder.CreateIndex(
- name: "IX_Shipment_Status",
- table: "Shipment",
- column: "Status");
- migrationBuilder.CreateIndex(
- name: "IX_Shipment_TrackingNumber",
- table: "Shipment",
- column: "TrackingNumber");
- // 기존 WithdrawalRequest row 백필: 신규 분개 컬럼(DonationAmount/StoreRevenueAmount)이 0 으로 채워졌으나,
- // 기존 row 는 모두 후원 잔액(Donation) 단일 출금이었으므로 DonationAmount = RequestedAmount 로 백필.
- migrationBuilder.Sql("UPDATE WithdrawalRequest SET DonationAmount = RequestedAmount WHERE DonationAmount = 0 AND RequestedAmount > 0;");
- }
- /// <inheritdoc />
- protected override void Down(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.DropTable(
- name: "GameSettlement");
- migrationBuilder.DropTable(
- name: "MemberAddress");
- migrationBuilder.DropTable(
- name: "MemberInventory");
- migrationBuilder.DropTable(
- name: "OrderRefund");
- migrationBuilder.DropTable(
- name: "Shipment");
- migrationBuilder.DropTable(
- name: "OrderItem");
- migrationBuilder.DropTable(
- name: "CouponCode");
- migrationBuilder.DropTable(
- name: "Order");
- migrationBuilder.DropTable(
- name: "Coupon");
- migrationBuilder.DropTable(
- name: "Product");
- migrationBuilder.DropTable(
- name: "Game");
- migrationBuilder.DropColumn(
- name: "DonationAmount",
- table: "WithdrawalRequest");
- migrationBuilder.DropColumn(
- name: "StoreRevenueAmount",
- table: "WithdrawalRequest");
- }
- }
- }
|