diff --git a/Net.Sdk.Web.Extensions.Azure/Net.Sdk.Web.Extensions.Azure.csproj b/Net.Sdk.Web.Extensions.Azure/Net.Sdk.Web.Extensions.Azure.csproj
index c0f3590..f674291 100644
--- a/Net.Sdk.Web.Extensions.Azure/Net.Sdk.Web.Extensions.Azure.csproj
+++ b/Net.Sdk.Web.Extensions.Azure/Net.Sdk.Web.Extensions.Azure.csproj
@@ -6,7 +6,7 @@
enable
Library
true
- 0.8.2
+ 0.8.3
Alexandru Macocian
LICENSE
true
diff --git a/Net.Sdk.Web.Extensions.SourceGenerators/Constants.cs b/Net.Sdk.Web.Extensions.SourceGenerators/Constants.cs
index c18d963..a5a3ff7 100644
--- a/Net.Sdk.Web.Extensions.SourceGenerators/Constants.cs
+++ b/Net.Sdk.Web.Extensions.SourceGenerators/Constants.cs
@@ -70,6 +70,7 @@ public static class Constants
public const string PatternPropertyName = "Pattern";
+ public const string UseRoutesMethodName = "UseRoutes";
public const string EndpointRouteBuilderExtensionsName = "EndpointRouteBuilderExtensions";
public const string IEndpointRouteBuilderTypeName = "IEndpointRouteBuilder";
public const string WebApplicationBuilderExtensionsName = "WebApplicationBuilderExtension";
diff --git a/Net.Sdk.Web.Extensions.SourceGenerators/MapEndpointGenerator.cs b/Net.Sdk.Web.Extensions.SourceGenerators/MapEndpointGenerator.cs
index 4907aac..5f0025e 100644
--- a/Net.Sdk.Web.Extensions.SourceGenerators/MapEndpointGenerator.cs
+++ b/Net.Sdk.Web.Extensions.SourceGenerators/MapEndpointGenerator.cs
@@ -5,7 +5,6 @@ using Sybil;
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
-using System.Diagnostics;
using System.Linq;
using System.Text;
@@ -72,7 +71,13 @@ public class MapEndpointGenerator : IIncrementalGenerator
.WithModifiers($"{Constants.Public} {Constants.Static}");
namespaceBuilder.WithClass(extensionClassBuilder);
- foreach(var classDeclarationSyntax in classes)
+ var useRoutesMethodBuilder = SyntaxBuilder.CreateMethod(Constants.IEndpointRouteBuilderTypeName, Constants.UseRoutesMethodName)
+ .WithThisParameter(Constants.IEndpointRouteBuilderTypeName, Constants.BuilderParameterName)
+ .WithModifiers($"{Constants.Public} {Constants.Static}");
+ extensionClassBuilder.WithMethod(useRoutesMethodBuilder);
+ var useRoutesBody = new StringBuilder();
+
+ foreach (var classDeclarationSyntax in classes)
{
if (classDeclarationSyntax is null)
{
@@ -90,38 +95,48 @@ public class MapEndpointGenerator : IIncrementalGenerator
if (attributes.FirstOrDefault(a => a.Name.ToString() == Constants.GetAttributeName || a.Name.ToString() == Constants.GetAttributeShortName) is AttributeSyntax getAttributeSyntax)
{
+ var methodName = $"MapGet{classDeclarationSyntax.Identifier}";
var methodBuilder = GetMethodBuilderByType("Get", classDeclarationSyntax, getAttributeSyntax, compilation, attributes, routeUsings);
if (methodBuilder is not null)
{
+ useRoutesBody.AppendLine($"{methodName}(builder);");
extensionClassBuilder.WithMethod(methodBuilder);
}
}
else if (attributes.FirstOrDefault(a => a.Name.ToString() == Constants.PostAttributeName || a.Name.ToString() == Constants.PostAttributeShortName) is AttributeSyntax postAttributeSyntax)
{
+ var methodName = $"MapPost{classDeclarationSyntax.Identifier}";
var methodBuilder = GetMethodBuilderByType("Post", classDeclarationSyntax, postAttributeSyntax, compilation, attributes, routeUsings);
if (methodBuilder is not null)
{
+ useRoutesBody.AppendLine($"{methodName}(builder);");
extensionClassBuilder.WithMethod(methodBuilder);
}
}
else if (attributes.FirstOrDefault(a => a.Name.ToString() == Constants.PutAttributeName || a.Name.ToString() == Constants.PutAttributeShortName) is AttributeSyntax putAttributeSyntax)
{
+ var methodName = $"MapPut{classDeclarationSyntax.Identifier}";
var methodBuilder = GetMethodBuilderByType("Put", classDeclarationSyntax, putAttributeSyntax, compilation, attributes, routeUsings);
if (methodBuilder is not null)
{
+ useRoutesBody.AppendLine($"{methodName}(builder);");
extensionClassBuilder.WithMethod(methodBuilder);
}
}
else if (attributes.FirstOrDefault(a => a.Name.ToString() == Constants.DeleteAttributeName || a.Name.ToString() == Constants.DeleteAttributeShortName) is AttributeSyntax deleteAttributeSyntax)
{
+ var methodName = $"MapDelete{classDeclarationSyntax.Identifier}";
var methodBuilder = GetMethodBuilderByType("Delete", classDeclarationSyntax, deleteAttributeSyntax, compilation, attributes, routeUsings);
if (methodBuilder is not null)
{
+ useRoutesBody.AppendLine($"{methodName}(builder);");
extensionClassBuilder.WithMethod(methodBuilder);
}
}
}
+ useRoutesBody.AppendLine("return builder;");
+ useRoutesMethodBuilder.WithBody(useRoutesBody.ToString());
foreach(var classUsing in routeUsings)
{
builder.WithUsing(classUsing);
diff --git a/Net.Sdk.Web.Extensions.SourceGenerators/Net.Sdk.Web.Extensions.SourceGenerators.csproj b/Net.Sdk.Web.Extensions.SourceGenerators/Net.Sdk.Web.Extensions.SourceGenerators.csproj
index 1d3c109..8e82bed 100644
--- a/Net.Sdk.Web.Extensions.SourceGenerators/Net.Sdk.Web.Extensions.SourceGenerators.csproj
+++ b/Net.Sdk.Web.Extensions.SourceGenerators/Net.Sdk.Web.Extensions.SourceGenerators.csproj
@@ -2,7 +2,7 @@
netstandard2.0
- 0.8.2
+ 0.8.3
latest
true
Alexandru Macocian
diff --git a/Net.Sdk.Web.Extensions/Net.Sdk.Web.Extensions.csproj b/Net.Sdk.Web.Extensions/Net.Sdk.Web.Extensions.csproj
index 45c83b2..1cc8b14 100644
--- a/Net.Sdk.Web.Extensions/Net.Sdk.Web.Extensions.csproj
+++ b/Net.Sdk.Web.Extensions/Net.Sdk.Web.Extensions.csproj
@@ -6,7 +6,7 @@
enable
Library
true
- 0.8.2
+ 0.8.3
Alexandru Macocian
LICENSE
true