TirsvadCLI Portfolio Library
Loading...
Searching...
No Matches
20260124113855_InitialCreate.cs
1using System;
2using Microsoft.EntityFrameworkCore.Migrations;
3using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
4
5#nullable disable
6
8{
10 public partial class InitialCreate : Migration
11 {
13 protected override void Up(MigrationBuilder migrationBuilder)
14 {
15 // Use idempotent SQL for PostgreSQL to avoid errors when tables already exist (e.g. during CI or reused DB)
16 migrationBuilder.Sql(@"CREATE TABLE IF NOT EXISTS ""AspNetRoles"" (
17 ""Id"" uuid NOT NULL,
18 ""Name"" character varying(256),
19 ""NormalizedName"" character varying(256),
20 ""ConcurrencyStamp"" text,
21 CONSTRAINT ""PK_AspNetRoles"" PRIMARY KEY (""Id"")
22);");
23
24 migrationBuilder.Sql(@"CREATE TABLE IF NOT EXISTS ""AspNetUsers"" (
25 ""Id"" uuid NOT NULL,
26 ""UserName"" character varying(256),
27 ""NormalizedUserName"" character varying(256),
28 ""Email"" character varying(256),
29 ""NormalizedEmail"" character varying(256),
30 ""EmailConfirmed"" boolean NOT NULL,
31 ""PasswordHash"" text,
32 ""SecurityStamp"" text,
33 ""ConcurrencyStamp"" text,
34 ""PhoneNumber"" text,
35 ""PhoneNumberConfirmed"" boolean NOT NULL,
36 ""TwoFactorEnabled"" boolean NOT NULL,
37 ""LockoutEnd"" timestamp with time zone,
38 ""LockoutEnabled"" boolean NOT NULL,
39 ""AccessFailedCount"" integer NOT NULL,
40 CONSTRAINT ""PK_AspNetUsers"" PRIMARY KEY (""Id"")
41);");
42
43 migrationBuilder.Sql(@"CREATE TABLE IF NOT EXISTS ""AspNetRoleClaims"" (
44 ""Id"" integer GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
45 ""RoleId"" uuid NOT NULL,
46 ""ClaimType"" text,
47 ""ClaimValue"" text,
48 CONSTRAINT ""FK_AspNetRoleClaims_AspNetRoles_RoleId"" FOREIGN KEY (""RoleId"") REFERENCES ""AspNetRoles"" (""Id"") ON DELETE CASCADE
49);");
50
51 migrationBuilder.Sql(@"CREATE TABLE IF NOT EXISTS ""AspNetUserClaims"" (
52 ""Id"" integer GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
53 ""UserId"" uuid NOT NULL,
54 ""ClaimType"" text,
55 ""ClaimValue"" text,
56 CONSTRAINT ""FK_AspNetUserClaims_AspNetUsers_UserId"" FOREIGN KEY (""UserId"") REFERENCES ""AspNetUsers"" (""Id"") ON DELETE CASCADE
57);");
58
59 migrationBuilder.Sql(@"CREATE TABLE IF NOT EXISTS ""AspNetUserLogins"" (
60 ""LoginProvider"" text NOT NULL,
61 ""ProviderKey"" text NOT NULL,
62 ""ProviderDisplayName"" text,
63 ""UserId"" uuid NOT NULL,
64 CONSTRAINT ""PK_AspNetUserLogins"" PRIMARY KEY (""LoginProvider"", ""ProviderKey""),
65 CONSTRAINT ""FK_AspNetUserLogins_AspNetUsers_UserId"" FOREIGN KEY (""UserId"") REFERENCES ""AspNetUsers"" (""Id"") ON DELETE CASCADE
66);");
67
68 migrationBuilder.Sql(@"CREATE TABLE IF NOT EXISTS ""AspNetUserRoles"" (
69 ""UserId"" uuid NOT NULL,
70 ""RoleId"" uuid NOT NULL,
71 CONSTRAINT ""PK_AspNetUserRoles"" PRIMARY KEY (""UserId"", ""RoleId""),
72 CONSTRAINT ""FK_AspNetUserRoles_AspNetRoles_RoleId"" FOREIGN KEY (""RoleId"") REFERENCES ""AspNetRoles"" (""Id"") ON DELETE CASCADE,
73 CONSTRAINT ""FK_AspNetUserRoles_AspNetUsers_UserId"" FOREIGN KEY (""UserId"") REFERENCES ""AspNetUsers"" (""Id"") ON DELETE CASCADE
74);");
75
76 migrationBuilder.Sql(@"CREATE TABLE IF NOT EXISTS ""AspNetUserTokens"" (
77 ""UserId"" uuid NOT NULL,
78 ""LoginProvider"" text NOT NULL,
79 ""Name"" text NOT NULL,
80 ""Value"" text,
81 CONSTRAINT ""PK_AspNetUserTokens"" PRIMARY KEY (""UserId"", ""LoginProvider"", ""Name""),
82 CONSTRAINT ""FK_AspNetUserTokens_AspNetUsers_UserId"" FOREIGN KEY (""UserId"") REFERENCES ""AspNetUsers"" (""Id"") ON DELETE CASCADE
83);");
84
85 // Seed test user if not exists
86 migrationBuilder.Sql(@"INSERT INTO ""AspNetUsers"" (""Id"", ""AccessFailedCount"", ""ConcurrencyStamp"", ""Email"", ""EmailConfirmed"", ""LockoutEnabled"", ""LockoutEnd"", ""NormalizedEmail"", ""NormalizedUserName"", ""PasswordHash"", ""PhoneNumber"", ""PhoneNumberConfirmed"", ""SecurityStamp"", ""TwoFactorEnabled"", ""UserName"")
87SELECT '11111111-1111-1111-1111-111111111111'::uuid, 0, '11111111-1111-1111-1111-111111111113', 'testuser@example.com', true, false, NULL, 'TESTUSER@EXAMPLE.COM', 'TESTUSER', 'AQAAAAEAACcQAAAAEJQwQwQwQwQwQwQwQwQwQwQwQwQwQwQwQwQwQwQwQwQwQwQwQwQwQwQwQwQwQwQwQw==', NULL, false, '11111111-1111-1111-1111-111111111112', false, 'testuser'
88WHERE NOT EXISTS (SELECT 1 FROM ""AspNetUsers"" WHERE ""Id"" = '11111111-1111-1111-1111-111111111111'::uuid);");
89
90 // Indexes (create only if not exists)
91 migrationBuilder.Sql(@"CREATE INDEX IF NOT EXISTS ""IX_AspNetRoleClaims_RoleId"" ON ""AspNetRoleClaims"" (""RoleId"");");
92 migrationBuilder.Sql(@"CREATE UNIQUE INDEX IF NOT EXISTS ""RoleNameIndex"" ON ""AspNetRoles"" (""NormalizedName"");");
93 migrationBuilder.Sql(@"CREATE INDEX IF NOT EXISTS ""IX_AspNetUserClaims_UserId"" ON ""AspNetUserClaims"" (""UserId"");");
94 migrationBuilder.Sql(@"CREATE INDEX IF NOT EXISTS ""IX_AspNetUserLogins_UserId"" ON ""AspNetUserLogins"" (""UserId"");");
95 migrationBuilder.Sql(@"CREATE INDEX IF NOT EXISTS ""IX_AspNetUserRoles_RoleId"" ON ""AspNetUserRoles"" (""RoleId"");");
96 migrationBuilder.Sql(@"CREATE INDEX IF NOT EXISTS ""EmailIndex"" ON ""AspNetUsers"" (""NormalizedEmail"");");
97 migrationBuilder.Sql(@"CREATE UNIQUE INDEX IF NOT EXISTS ""UserNameIndex"" ON ""AspNetUsers"" (""NormalizedUserName"");");
98 }
99
101 protected override void Down(MigrationBuilder migrationBuilder)
102 {
103 migrationBuilder.DropTable(
104 name: "AspNetRoleClaims");
105
106 migrationBuilder.DropTable(
107 name: "AspNetUserClaims");
108
109 migrationBuilder.DropTable(
110 name: "AspNetUserLogins");
111
112 migrationBuilder.DropTable(
113 name: "AspNetUserRoles");
114
115 migrationBuilder.DropTable(
116 name: "AspNetUserTokens");
117
118 migrationBuilder.DropTable(
119 name: "AspNetRoles");
120
121 migrationBuilder.DropTable(
122 name: "AspNetUsers");
123 }
124 }
125}