Skip to content

Commit 6776488

Browse files
committed
feat(*): add it type selector for operation claims (guid/numeric)
1 parent 2e9b1f3 commit 6776488

File tree

6 files changed

+62
-7
lines changed

6 files changed

+62
-7
lines changed

src/corePackages/Core.CodeGen/TemplateEngine/Scriban/ScribanBuiltinFunctionsExtensions.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public class ScribanBuiltinFunctionsExtensions : BuiltinFunctions
99
public ScribanBuiltinFunctionsExtensions()
1010
{
1111
addStringFunctionsExtensions();
12+
addGuidFunctionsExtensions();
1213
}
1314

1415
private void addStringFunctionsExtensions()
@@ -20,4 +21,14 @@ private void addStringFunctionsExtensions()
2021
);
2122
SetValue(member: "string", stringFunctions, readOnly: true);
2223
}
24+
25+
private void addGuidFunctionsExtensions()
26+
{
27+
ScriptObject guidFunctions = [];
28+
guidFunctions.Import(
29+
obj: typeof(ScribanGuidFunctionsExtensions),
30+
renamer: member => member.Name.ToLower(CultureInfo.GetCultureInfo("en-EN"))
31+
);
32+
SetValue(member: "guid", guidFunctions, readOnly: true);
33+
}
2334
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
using Scriban.Functions;
2+
3+
namespace Core.CodeGen.TemplateEngine.Scriban;
4+
5+
public class ScribanGuidFunctionsExtensions : BuiltinFunctions
6+
{
7+
public static string New() => System.Guid.NewGuid().ToString();
8+
}

src/nArchGen/ConsoleUI/Commands/Generate/Crud/GenerateCrudCliCommand.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@ public override async Task<int> ExecuteAsync(CommandContext context, Settings se
4545
IsSecuredOperationUsed = settings.IsSecuredOperationUsed,
4646
IsDynamicQueryUsed = settings.IsDynamicQueryUsed,
4747
CustomOperationClaimPath = settings.CustomOperationClaimPath,
48-
DbContextName = settings.DbContextName!
48+
DbContextName = settings.DbContextName!,
49+
OperationClaimType = settings.OperationClaimType ?? OperationClaimType.Numeric,
50+
OperationClaimTypeString = (settings.OperationClaimType ?? OperationClaimType.Numeric).ToString()
4951
},
5052
ProjectPath = settings.ProjectPath,
5153
DbContextName = settings.DbContextName!

src/nArchGen/ConsoleUI/Commands/Generate/Crud/GenerateCrudCliCommandSettings.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Core.CodeGen.Code;
22
using Core.CrossCuttingConcerns.Exceptions;
33
using Core.CrossCuttingConcerns.Helpers;
4+
using Domain.ValueObjects;
45
using Spectre.Console;
56
using Spectre.Console.Cli;
67

@@ -37,6 +38,9 @@ public class Settings : CommandSettings
3738
[CommandOption("--operation-claim-path")]
3839
public string? CustomOperationClaimPath { get; set; }
3940

41+
[CommandOption("--operation-claim-type")]
42+
public OperationClaimType? OperationClaimType { get; set; }
43+
4044
public string ProjectPath =>
4145
ProjectName != null
4246
? PlatformHelper.SecuredPathJoin(Environment.CurrentDirectory, "src", ProjectName.ToCamelCase())
@@ -146,6 +150,7 @@ public void CheckMechanismOptions()
146150
if (mechanismsToPrompt.Count == 0)
147151
{
148152
CheckCustomOperationClaimPath();
153+
CheckOperationClaimType();
149154
return;
150155
}
151156

@@ -184,6 +189,7 @@ public void CheckMechanismOptions()
184189
});
185190

186191
CheckCustomOperationClaimPath();
192+
CheckOperationClaimType();
187193
}
188194

189195
public void CheckCustomOperationClaimPath()
@@ -202,5 +208,23 @@ public void CheckCustomOperationClaimPath()
202208
AnsiConsole.MarkupLine($"Custom Operation Claim Path: [blue]{CustomOperationClaimPath}[/].");
203209
}
204210
}
211+
212+
public void CheckOperationClaimType()
213+
{
214+
if (OperationClaimType.HasValue)
215+
{
216+
AnsiConsole.MarkupLine($"Operation Claim Type: [blue]{OperationClaimType.Value}[/].");
217+
return;
218+
}
219+
220+
OperationClaimType = AnsiConsole.Prompt(
221+
new SelectionPrompt<OperationClaimType>()
222+
.Title("What's your [green]Operation Claim type[/]?")
223+
.PageSize(3)
224+
.AddChoices(Domain.ValueObjects.OperationClaimType.Numeric, Domain.ValueObjects.OperationClaimType.Guid)
225+
);
226+
227+
AnsiConsole.MarkupLine($"Operation Claim Type: [blue]{OperationClaimType.Value}[/].");
228+
}
205229
}
206230
}
Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
#region {{ entity.name | string.pascalcase | string.plural }} CRUD
2+
23
featureOperationClaims.AddRange(
34
[
4-
new() { Id = ++lastId, Name = "{{ entity.name | string.pascalcase | string.plural }}.Admin" },
5-
new() { Id = ++lastId, Name = "{{ entity.name | string.pascalcase | string.plural }}.Read" },
6-
new() { Id = ++lastId, Name = "{{ entity.name | string.pascalcase | string.plural }}.Write" },
7-
new() { Id = ++lastId, Name = "{{ entity.name | string.pascalcase | string.plural }}.Create" },
8-
new() { Id = ++lastId, Name = "{{ entity.name | string.pascalcase | string.plural }}.Update" },
9-
new() { Id = ++lastId, Name = "{{ entity.name | string.pascalcase | string.plural }}.Delete" },
5+
new() { Id = {{ if operation_claim_type_string == "Guid" }}Guid.Parse("{{ guid.new }}"){{ else }}++lastId{{ end }}, Name = "{{ entity.name | string.pascalcase | string.plural }}.Admin" },
6+
new() { Id = {{ if operation_claim_type_string == "Guid" }}Guid.Parse("{{ guid.new }}"){{ else }}++lastId{{ end }}, Name = "{{ entity.name | string.pascalcase | string.plural }}.Read" },
7+
new() { Id = {{ if operation_claim_type_string == "Guid" }}Guid.Parse("{{ guid.new }}"){{ else }}++lastId{{ end }}, Name = "{{ entity.name | string.pascalcase | string.plural }}.Write" },
8+
new() { Id = {{ if operation_claim_type_string == "Guid" }}Guid.Parse("{{ guid.new }}"){{ else }}++lastId{{ end }}, Name = "{{ entity.name | string.pascalcase | string.plural }}.Create" },
9+
new() { Id = {{ if operation_claim_type_string == "Guid" }}Guid.Parse("{{ guid.new }}"){{ else }}++lastId{{ end }}, Name = "{{ entity.name | string.pascalcase | string.plural }}.Update" },
10+
new() { Id = {{ if operation_claim_type_string == "Guid" }}Guid.Parse("{{ guid.new }}"){{ else }}++lastId{{ end }}, Name = "{{ entity.name | string.pascalcase | string.plural }}.Delete" },
1011
]
1112
);
1213
#endregion

src/nArchGen/Domain/ValueObjects/CrudTemplateData.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,13 @@ public class CrudTemplateData : ITemplateData
1313
public bool IsDynamicQueryUsed { get; set; }
1414
public string? CustomOperationClaimPath { get; set; }
1515
public bool IsCustomOperationClaimPath => !string.IsNullOrEmpty(CustomOperationClaimPath);
16+
17+
public OperationClaimType OperationClaimType { get; set; } = OperationClaimType.Numeric;
18+
public string OperationClaimTypeString { get; set; } = "Numeric";
19+
}
20+
21+
public enum OperationClaimType
22+
{
23+
Numeric,
24+
Guid
1625
}

0 commit comments

Comments
 (0)