20260711064156_AddNavMenuItem.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using System;
  2. using Microsoft.EntityFrameworkCore.Migrations;
  3. #nullable disable
  4. namespace Infrastructure.Migrations.AppDb
  5. {
  6. /// <inheritdoc />
  7. public partial class AddNavMenuItem : Migration
  8. {
  9. /// <inheritdoc />
  10. protected override void Up(MigrationBuilder migrationBuilder)
  11. {
  12. migrationBuilder.CreateTable(
  13. name: "NavMenuItem",
  14. columns: table => new
  15. {
  16. ID = table.Column<int>(type: "int", nullable: false, comment: "PK")
  17. .Annotation("SqlServer:Identity", "1, 1"),
  18. Label = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "메뉴 명"),
  19. Href = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false, comment: "링크 주소"),
  20. SortOrder = table.Column<int>(type: "int", nullable: false, comment: "정렬 순서"),
  21. IsVisible = table.Column<bool>(type: "bit", nullable: false, comment: "노출 여부"),
  22. UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: false, comment: "수정 일시"),
  23. CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false, comment: "등록 일시")
  24. },
  25. constraints: table =>
  26. {
  27. table.PrimaryKey("PK_NavMenuItem", x => x.ID);
  28. },
  29. comment: "상단 내비게이션 메뉴");
  30. migrationBuilder.CreateIndex(
  31. name: "IX_NavMenuItem_SortOrder",
  32. table: "NavMenuItem",
  33. column: "SortOrder");
  34. // 기존 하드코딩 상단 메뉴 10개 시드 (InsertData 로 파라미터화 → 한글 nvarchar 안전)
  35. DateTime seededAt = new DateTime(2026, 7, 10, 0, 0, 0, DateTimeKind.Utc);
  36. migrationBuilder.InsertData(
  37. table: "NavMenuItem",
  38. columns: new[] { "Label", "Href", "SortOrder", "IsVisible", "CreatedAt", "UpdatedAt" },
  39. values: new object[,]
  40. {
  41. { "시장", "/market", 1, true, seededAt, seededAt },
  42. { "종목", "/stock", 2, true, seededAt, seededAt },
  43. { "모의투자", "/paper", 3, true, seededAt, seededAt },
  44. { "게임", "/games", 4, true, seededAt, seededAt },
  45. { "장전 시황", "/board/briefing", 5, true, seededAt, seededAt },
  46. { "수익인증", "/board/proof", 6, true, seededAt, seededAt },
  47. { "피드", "/feed/all", 7, true, seededAt, seededAt },
  48. { "상점", "/store", 8, true, seededAt, seededAt },
  49. { "출석부", "/attendance", 9, true, seededAt, seededAt },
  50. { "고객지원", "/board/notice", 10, true, seededAt, seededAt }
  51. });
  52. }
  53. /// <inheritdoc />
  54. protected override void Down(MigrationBuilder migrationBuilder)
  55. {
  56. migrationBuilder.DropTable(
  57. name: "NavMenuItem");
  58. }
  59. }
  60. }