From 41b356a02b4b71503fd2a1a23cd30796f03eacb7 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Mon, 30 Jan 2023 17:29:54 +0100 Subject: [PATCH] Refactor draft version selection --- .../Endpoints/WorkflowDefinitions/Import/Endpoint.cs | 3 ++- .../Endpoints/WorkflowDefinitions/Post/Endpoint.cs | 11 ++++++++++- .../Implementations/WorkflowDefinitionManager.cs | 4 +--- .../Implementations/WorkflowDefinitionPublisher.cs | 4 ++-- .../Services/IWorkflowDefinitionPublisher.cs | 3 ++- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Import/Endpoint.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Import/Endpoint.cs index b38672db5..a60a7d216 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Import/Endpoint.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Import/Endpoint.cs @@ -1,5 +1,6 @@ using System.Text.Json; using Elsa.Abstractions; +using Elsa.Common.Models; using Elsa.Workflows.Api.Models; using Elsa.Workflows.Core.Serialization; using Elsa.Workflows.Management.Mappers; @@ -48,7 +49,7 @@ internal class Import : ElsaEndpoint v.Version == version)) - { throw new Exception("Latest or published versions cannot be reverted"); - } var latestVersion = publishedAndLatestVersions.First(v => v.IsLatest); latestVersion.IsLatest = false; await _store.SaveAsync(latestVersion, cancellationToken); - var draft = await _workflowPublisher.GetDraftAsync(definitionId, version, cancellationToken); + var draft = await _workflowPublisher.GetDraftAsync(definitionId, VersionOptions.SpecificVersion(version), cancellationToken); draft!.Id = _identityGenerator.GenerateId(); draft.Version = latestVersion.Version + 1; draft.IsLatest = true; diff --git a/src/modules/Elsa.Workflows.Management/Implementations/WorkflowDefinitionPublisher.cs b/src/modules/Elsa.Workflows.Management/Implementations/WorkflowDefinitionPublisher.cs index 2bfa50c4b..ca56301d9 100644 --- a/src/modules/Elsa.Workflows.Management/Implementations/WorkflowDefinitionPublisher.cs +++ b/src/modules/Elsa.Workflows.Management/Implementations/WorkflowDefinitionPublisher.cs @@ -121,9 +121,9 @@ public class WorkflowDefinitionPublisher : IWorkflowDefinitionPublisher } /// - public async Task GetDraftAsync(string definitionId, int? version, CancellationToken cancellationToken = default) + public async Task GetDraftAsync(string definitionId, VersionOptions versionOptions, CancellationToken cancellationToken = default) { - var definition = (await _workflowDefinitionStore.FindManyByDefinitionIdAsync(definitionId, version.HasValue ? VersionOptions.SpecificVersion(version.Value) : VersionOptions.Latest, cancellationToken)).FirstOrDefault(); + var definition = (await _workflowDefinitionStore.FindManyByDefinitionIdAsync(definitionId, versionOptions, cancellationToken)).FirstOrDefault(); if (definition == null) return null; diff --git a/src/modules/Elsa.Workflows.Management/Services/IWorkflowDefinitionPublisher.cs b/src/modules/Elsa.Workflows.Management/Services/IWorkflowDefinitionPublisher.cs index ea7c42890..7d5536bb5 100644 --- a/src/modules/Elsa.Workflows.Management/Services/IWorkflowDefinitionPublisher.cs +++ b/src/modules/Elsa.Workflows.Management/Services/IWorkflowDefinitionPublisher.cs @@ -1,3 +1,4 @@ +using Elsa.Common.Models; using Elsa.Workflows.Management.Entities; namespace Elsa.Workflows.Management.Services; @@ -9,6 +10,6 @@ public interface IWorkflowDefinitionPublisher Task PublishAsync(WorkflowDefinition definition, CancellationToken cancellationToken = default); Task RetractAsync(string definitionId, CancellationToken cancellationToken = default); Task RetractAsync(WorkflowDefinition definition, CancellationToken cancellationToken = default); - Task GetDraftAsync(string definitionId, int? version = null, CancellationToken cancellationToken = default); + Task GetDraftAsync(string definitionId, VersionOptions versionOptions, CancellationToken cancellationToken = default); Task SaveDraftAsync(WorkflowDefinition definition, CancellationToken cancellationToken = default); } \ No newline at end of file