diff --git a/src/modules/Elsa.Workflows.Api/Elsa.Workflows.Api.csproj b/src/modules/Elsa.Workflows.Api/Elsa.Workflows.Api.csproj index 4fff95dc9..94828c0a3 100644 --- a/src/modules/Elsa.Workflows.Api/Elsa.Workflows.Api.csproj +++ b/src/modules/Elsa.Workflows.Api/Elsa.Workflows.Api.csproj @@ -15,4 +15,8 @@ + + + + diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/CommitStrategies/Activities/List/Endpoint.cs b/src/modules/Elsa.Workflows.Api/Endpoints/CommitStrategies/Activities/List/Endpoint.cs new file mode 100644 index 000000000..c7383256a --- /dev/null +++ b/src/modules/Elsa.Workflows.Api/Endpoints/CommitStrategies/Activities/List/Endpoint.cs @@ -0,0 +1,28 @@ +using Elsa.Abstractions; +using Elsa.Models; +using Elsa.Workflows.CommitStates; + +namespace Elsa.Workflows.Api.Endpoints.CommitStrategies.Activities.List; + +/// +/// Represents an API endpoint that provides a list of registered workflow commit strategies. +/// +/// +/// This class is an implementation of an endpoint that retrieves a collection of workflow commit strategy registrations +/// from a provided registry and returns them in a unified response. +/// +internal class List(ICommitStrategyRegistry registry) : ElsaEndpointWithoutRequest> +{ + public override void Configure() + { + Get("/descriptors/commit-strategies/activities"); + ConfigurePermissions("read:commit-strategies"); + } + + public override Task> ExecuteAsync(CancellationToken cancellationToken) + { + var descriptors = registry.ListActivityStrategyRegistrations().ToList(); + var response =new ListResponse(descriptors); + return Task.FromResult(response); + } +} \ No newline at end of file diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/CommitStrategies/List/Endpoint.cs b/src/modules/Elsa.Workflows.Api/Endpoints/CommitStrategies/List/Endpoint.cs deleted file mode 100644 index 2828013ca..000000000 --- a/src/modules/Elsa.Workflows.Api/Endpoints/CommitStrategies/List/Endpoint.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System.ComponentModel; -using System.ComponentModel.DataAnnotations; -using System.Reflection; -using Elsa.Abstractions; -using Elsa.Extensions; -using Elsa.Models; -using Humanizer; - -namespace Elsa.Workflows.Api.Endpoints.CommitStrategies.List; - -/// -/// Returns list of available implementations. -/// -internal class List(IEnumerable strategies) : ElsaEndpointWithoutRequest> -{ - public override void Configure() - { - Get("/descriptors/incident-strategies"); - ConfigurePermissions("read:incident-strategies"); - } - - public override Task> ExecuteAsync(CancellationToken cancellationToken) - { - var descriptors = strategies.Select(IncidentStrategyDescriptor.FromStrategy).OrderBy(x => x.DisplayName).ToList(); - var response =new ListResponse(descriptors); - return Task.FromResult(response); - } -} - -internal record IncidentStrategyDescriptor(string DisplayName, string Description, string TypeName) -{ - public static IncidentStrategyDescriptor FromStrategy(IIncidentStrategy strategy) - { - var type = strategy.GetType(); - var displayNameAttribute = type.GetCustomAttribute(); - var descriptionAttribute = type.GetCustomAttribute(); - var displayAttribute = type.GetCustomAttribute(); - var displayName = displayNameAttribute?.DisplayName ?? displayAttribute?.Name ?? type.Name.Replace("Strategy", "").Humanize(); - var description = descriptionAttribute?.Description ?? displayAttribute?.Description ?? ""; - - return new IncidentStrategyDescriptor(displayName, description, type.GetSimpleAssemblyQualifiedName()); - } -} \ No newline at end of file diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/CommitStrategies/Workflows/List/Endpoint.cs b/src/modules/Elsa.Workflows.Api/Endpoints/CommitStrategies/Workflows/List/Endpoint.cs new file mode 100644 index 000000000..3ee03c549 --- /dev/null +++ b/src/modules/Elsa.Workflows.Api/Endpoints/CommitStrategies/Workflows/List/Endpoint.cs @@ -0,0 +1,28 @@ +using Elsa.Abstractions; +using Elsa.Models; +using Elsa.Workflows.CommitStates; + +namespace Elsa.Workflows.Api.Endpoints.CommitStrategies.Workflows.List; + +/// +/// Represents an API endpoint that provides a list of registered workflow commit strategies. +/// +/// +/// This class is an implementation of an endpoint that retrieves a collection of workflow commit strategy registrations +/// from a provided registry and returns them in a unified response. +/// +internal class List(ICommitStrategyRegistry registry) : ElsaEndpointWithoutRequest> +{ + public override void Configure() + { + Get("/descriptors/commit-strategies/workflows"); + ConfigurePermissions("read:commit-strategies"); + } + + public override Task> ExecuteAsync(CancellationToken cancellationToken) + { + var descriptors = registry.ListWorkflowStrategyRegistrations().ToList(); + var response =new ListResponse(descriptors); + return Task.FromResult(response); + } +} \ No newline at end of file