From ad44becbdabd2d683538f937e262d0e6beba623d Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Tue, 16 May 2023 19:09:09 +0200 Subject: [PATCH] Rename environment model --- .../Contracts/IEnvironmentsManager.cs | 9 ++++++++- .../Contracts/IEnvironmentsProvider.cs | 2 +- .../Elsa.Environments/Elsa.Environments.csproj | 1 + .../Endpoints/Environments/List/Endpoint.cs | 7 +++++-- ...kflowsEnvironment.cs => ServerEnvironment.cs} | 2 +- .../Options/EnvironmentsOptions.cs | 9 ++++++++- .../ConfigurationEnvironmentsProvider.cs | 2 +- .../Services/DefaultEnvironmentsManager.cs | 16 +++++++++++++--- .../Activities/AskDetails.cs | 1 - 9 files changed, 38 insertions(+), 11 deletions(-) rename src/modules/Elsa.Environments/Models/{WorkflowsEnvironment.cs => ServerEnvironment.cs} (94%) diff --git a/src/modules/Elsa.Environments/Contracts/IEnvironmentsManager.cs b/src/modules/Elsa.Environments/Contracts/IEnvironmentsManager.cs index e29aeeb2a..ec821bbd0 100644 --- a/src/modules/Elsa.Environments/Contracts/IEnvironmentsManager.cs +++ b/src/modules/Elsa.Environments/Contracts/IEnvironmentsManager.cs @@ -12,5 +12,12 @@ public interface IEnvironmentsManager /// /// The cancellation token. /// All environments. - Task> ListEnvironmentsAsync(CancellationToken cancellationToken = default); + ValueTask> ListEnvironmentsAsync(CancellationToken cancellationToken = default); + + /// + /// Returns the name of the default environment. + /// + /// The cancellation token. + /// The name of the default environment. + ValueTask GetDefaultEnvironmentNameAsync(CancellationToken cancellationToken = default); } \ No newline at end of file diff --git a/src/modules/Elsa.Environments/Contracts/IEnvironmentsProvider.cs b/src/modules/Elsa.Environments/Contracts/IEnvironmentsProvider.cs index e1b672de9..ad3b8a071 100644 --- a/src/modules/Elsa.Environments/Contracts/IEnvironmentsProvider.cs +++ b/src/modules/Elsa.Environments/Contracts/IEnvironmentsProvider.cs @@ -12,5 +12,5 @@ public interface IEnvironmentsProvider /// /// The cancellation token. /// A list of workflow environments. - ValueTask> GetEnvironmentsAsync(CancellationToken cancellationToken = default); + ValueTask> GetEnvironmentsAsync(CancellationToken cancellationToken = default); } \ No newline at end of file diff --git a/src/modules/Elsa.Environments/Elsa.Environments.csproj b/src/modules/Elsa.Environments/Elsa.Environments.csproj index 555c9558f..b4d811455 100644 --- a/src/modules/Elsa.Environments/Elsa.Environments.csproj +++ b/src/modules/Elsa.Environments/Elsa.Environments.csproj @@ -14,6 +14,7 @@ + diff --git a/src/modules/Elsa.Environments/Endpoints/Environments/List/Endpoint.cs b/src/modules/Elsa.Environments/Endpoints/Environments/List/Endpoint.cs index 58c6d42ce..fb6bff77f 100644 --- a/src/modules/Elsa.Environments/Endpoints/Environments/List/Endpoint.cs +++ b/src/modules/Elsa.Environments/Endpoints/Environments/List/Endpoint.cs @@ -1,6 +1,7 @@ using Elsa.Abstractions; using Elsa.Environments.Contracts; using Elsa.Environments.Models; +using Elsa.Identity; using JetBrains.Annotations; namespace Elsa.Environments.Endpoints.Environments.List; @@ -19,14 +20,16 @@ internal class Endpoint : ElsaEndpointWithoutRequest { Get("/environments"); ConfigurePermissions("read:environments"); + Policies(IdentityPolicyNames.SecurityRoot); } public override async Task ExecuteAsync(CancellationToken cancellationToken) { var environments = await _environmentsManager.ListEnvironmentsAsync(cancellationToken); - return new(environments.ToList()); + var defaultEnvironmentName = await _environmentsManager.GetDefaultEnvironmentNameAsync(cancellationToken); + return new(environments.ToList(), defaultEnvironmentName); } } [PublicAPI] -internal record Response(ICollection Environments); \ No newline at end of file +internal record Response(ICollection Environments, string? DefaultEnvironmentName = default); \ No newline at end of file diff --git a/src/modules/Elsa.Environments/Models/WorkflowsEnvironment.cs b/src/modules/Elsa.Environments/Models/ServerEnvironment.cs similarity index 94% rename from src/modules/Elsa.Environments/Models/WorkflowsEnvironment.cs rename to src/modules/Elsa.Environments/Models/ServerEnvironment.cs index 607be96bc..91cc0ce6f 100644 --- a/src/modules/Elsa.Environments/Models/WorkflowsEnvironment.cs +++ b/src/modules/Elsa.Environments/Models/ServerEnvironment.cs @@ -3,7 +3,7 @@ /// /// Represents the environment in which the workflow engine is running. /// -public class WorkflowsEnvironment +public class ServerEnvironment { /// /// The name of the environment. diff --git a/src/modules/Elsa.Environments/Options/EnvironmentsOptions.cs b/src/modules/Elsa.Environments/Options/EnvironmentsOptions.cs index a0a970375..9044a9ecd 100644 --- a/src/modules/Elsa.Environments/Options/EnvironmentsOptions.cs +++ b/src/modules/Elsa.Environments/Options/EnvironmentsOptions.cs @@ -1,14 +1,21 @@ using Elsa.Environments.Models; +using JetBrains.Annotations; namespace Elsa.Environments.Options; /// /// EnvironmentsOptions for providing environments. /// +[PublicAPI] public class EnvironmentsOptions { /// /// Gets or sets a list of environments. /// - public ICollection Environments { get; set; } = new List(); + public ICollection Environments { get; set; } = new List(); + + /// + /// The name of the default environment. + /// + public string? DefaultEnvironmentName { get; set; } } \ No newline at end of file diff --git a/src/modules/Elsa.Environments/Providers/ConfigurationEnvironmentsProvider.cs b/src/modules/Elsa.Environments/Providers/ConfigurationEnvironmentsProvider.cs index bef5fa3bd..f8c80718f 100644 --- a/src/modules/Elsa.Environments/Providers/ConfigurationEnvironmentsProvider.cs +++ b/src/modules/Elsa.Environments/Providers/ConfigurationEnvironmentsProvider.cs @@ -21,7 +21,7 @@ public class ConfigurationEnvironmentsProvider : IEnvironmentsProvider } /// - public ValueTask> GetEnvironmentsAsync(CancellationToken cancellationToken = default) + public ValueTask> GetEnvironmentsAsync(CancellationToken cancellationToken = default) { return new (_options.Value.Environments); } diff --git a/src/modules/Elsa.Environments/Services/DefaultEnvironmentsManager.cs b/src/modules/Elsa.Environments/Services/DefaultEnvironmentsManager.cs index c94170933..50fd08887 100644 --- a/src/modules/Elsa.Environments/Services/DefaultEnvironmentsManager.cs +++ b/src/modules/Elsa.Environments/Services/DefaultEnvironmentsManager.cs @@ -1,5 +1,7 @@ using Elsa.Environments.Contracts; using Elsa.Environments.Models; +using Elsa.Environments.Options; +using Microsoft.Extensions.Options; namespace Elsa.Environments.Services; @@ -7,19 +9,21 @@ namespace Elsa.Environments.Services; public class DefaultEnvironmentsManager : IEnvironmentsManager { private readonly IEnumerable _providers; + private readonly IOptions _options; /// /// Initializes a new instance of . /// - public DefaultEnvironmentsManager(IEnumerable providers) + public DefaultEnvironmentsManager(IEnumerable providers, IOptions options) { _providers = providers; + _options = options; } /// - public async Task> ListEnvironmentsAsync(CancellationToken cancellationToken = default) + public async ValueTask> ListEnvironmentsAsync(CancellationToken cancellationToken = default) { - var allEnvironments = new List(); + var allEnvironments = new List(); foreach (var provider in _providers) { @@ -29,4 +33,10 @@ public class DefaultEnvironmentsManager : IEnvironmentsManager return allEnvironments; } + + /// + public ValueTask GetDefaultEnvironmentNameAsync(CancellationToken cancellationToken = default) + { + return new(_options.Value.DefaultEnvironmentName); + } } \ No newline at end of file diff --git a/src/samples/console/Elsa.Samples.Composition/Activities/AskDetails.cs b/src/samples/console/Elsa.Samples.Composition/Activities/AskDetails.cs index 448c456d3..5a9136e09 100644 --- a/src/samples/console/Elsa.Samples.Composition/Activities/AskDetails.cs +++ b/src/samples/console/Elsa.Samples.Composition/Activities/AskDetails.cs @@ -1,7 +1,6 @@ using Elsa.Extensions; using Elsa.Workflows.Core.Activities; using Elsa.Workflows.Core.Models; -using Elsa.Workflows.Management.Activities.SetOutput; public class AskDetails : Composite {