@@ -10,117 +10,23 @@ public partial class AddModuleTypeAndApiLogsSeed : Migration
1010 /// <inheritdoc />
1111 protected override void Up ( MigrationBuilder migrationBuilder )
1212 {
13- // 1) Add column as nullable first
1413 migrationBuilder . AddColumn < string > (
15- name : "Type" ,
16- table : "Modules" ,
17- type : "nvarchar(100)" ,
18- maxLength : 100 ,
19- nullable : true
20- ) ;
21-
22- // 2) Backfill existing rows
23- migrationBuilder . Sql ( @"
24- UPDATE Modules SET Type = 'WebApp' WHERE Type IS NULL;
25- " ) ;
26-
27- // 3) Make it required (non-nullable) after backfill
28- migrationBuilder . AlterColumn < string > (
2914 name : "Type" ,
3015 table : "Modules" ,
3116 type : "nvarchar(100)" ,
3217 maxLength : 100 ,
3318 nullable : false ,
34- oldClrType : typeof ( string ) ,
35- oldType : "nvarchar(100)" ,
36- oldMaxLength : 100 ,
37- oldNullable : true ) ;
38-
39- // 4) Seed Category -> Module -> Function (idempotent)
40- migrationBuilder . Sql ( @"
41- DECLARE @catId INT;
42-
43- -- Ensure Administration category exists
44- SELECT @catId = Id FROM Categories WHERE Name = 'Administration';
45-
46- -- Ensure ApiLogs module exists (Area='', Controller='ErrorLogs', Action='GetAllErrors')
47- IF NOT EXISTS (
48- SELECT 1 FROM Modules
49- WHERE Name = 'ApiLogs' AND Controller = 'ErrorLogs' AND Action = 'GetAllErrors'
50- )
51- BEGIN
52- INSERT INTO Modules ([Name],[Area],[Controller],[Action],[CategoryId],[Type])
53- VALUES ('ApiLogs','', 'ErrorLogs','GetAllErrors', @catId, 'Api');
54- END
55-
56- DECLARE @modId INT;
57- SELECT @modId = Id FROM Modules
58- WHERE Name='ApiLogs' AND Controller='ErrorLogs' AND Action='GetAllErrors';
59-
60- -- Ensure function Api.Logs.View exists
61- IF NOT EXISTS (SELECT 1 FROM Functions WHERE [Code] = 'Api.Logs.View')
62- BEGIN
63- INSERT INTO Functions ([Code],[DisplayName],[ModuleId])
64- VALUES ('Api.Logs.View','Api View Logs', @modId);
65- END
66- " ) ;
67-
68-
69- // add allan if missing (hash created here once & inlined)
70- var hash = BCrypt . Net . BCrypt . HashPassword ( "allan" ) ;
71- migrationBuilder . Sql ( $@ "
72- IF NOT EXISTS (SELECT 1 FROM [Users] WHERE [UserName]='allan')
73- BEGIN
74- INSERT INTO [Users]([UserName],[Password]) VALUES ('allan','{ hash } ');
75- END
76- " ) ;
77-
78- // link allan ↔ Operator if missing
79- migrationBuilder . Sql ( @"
80- DECLARE @uid INT = (SELECT TOP 1 [Id] FROM [Users] WHERE [UserName]='allan');
81- DECLARE @rid INT = (SELECT TOP 1 [Id] FROM [Roles] WHERE [Name]='Admin');
82-
83- IF @uid IS NOT NULL AND @rid IS NOT NULL
84- AND NOT EXISTS(SELECT 1 FROM [UserRoles] WHERE [UserId]=@uid AND [RoleId]=@rid)
85- BEGIN
86- INSERT INTO [UserRoles]([UserId],[RoleId]) VALUES (@uid,@rid);
87- END
88- " ) ;
89-
19+ defaultValue : "WebApp"
20+ ) ;
9021 }
9122
9223 protected override void Down ( MigrationBuilder migrationBuilder )
93- {
94- // Remove function
95- migrationBuilder . Sql ( @"
96- DELETE F
97- FROM Functions F
98- WHERE F.[Code] = 'Api.Logs.View';
99- " ) ;
100-
101- // Remove module (only the one we added)
102- migrationBuilder . Sql ( @"
103- DELETE M
104- FROM Modules M
105- WHERE M.[Name] = 'ApiLogs' AND M.[Controller] = 'ErrorLogs' AND M.[Action] = 'GetAllErrors';
106- " ) ;
107-
24+ {
10825 // Drop the Type column
10926 migrationBuilder . DropColumn (
11027 name : "Type" ,
11128 table : "Modules"
11229 ) ;
113-
114- // Remove allan user and its roles
115- migrationBuilder . Sql ( @"
116- DECLARE @uid INT = (SELECT TOP 1 [Id] FROM [Users] WHERE [UserName]='allan');
117- IF @uid IS NOT NULL
118- BEGIN
119- DELETE FROM [UserRoles] WHERE [UserId]=@uid;
120- DELETE FROM [Users] WHERE [Id]=@uid;
121- END
122- " ) ;
12330 }
124-
12531 }
12632}
0 commit comments