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