Refactor WorkflowDefinitionManager: streamline constructor, remove unused field, and improve consistency in method calls.
This commit is contained in:
parent
95b17135a9
commit
fcdb6f5499
|
|
@ -7,38 +7,21 @@ using Elsa.Workflows.Management.Notifications;
|
|||
namespace Elsa.Workflows.Management.Services;
|
||||
|
||||
/// <inheritdoc />
|
||||
public class WorkflowDefinitionManager : IWorkflowDefinitionManager
|
||||
public class WorkflowDefinitionManager(
|
||||
IWorkflowDefinitionStore store,
|
||||
INotificationSender notificationSender,
|
||||
IWorkflowDefinitionPublisher workflowPublisher) : IWorkflowDefinitionManager
|
||||
{
|
||||
private readonly IWorkflowDefinitionStore _store;
|
||||
private readonly INotificationSender _notificationSender;
|
||||
private readonly IWorkflowDefinitionPublisher _workflowPublisher;
|
||||
private readonly IIdentityGenerator _identityGenerator;
|
||||
|
||||
/// <summary>
|
||||
/// Constructor.
|
||||
/// </summary>
|
||||
public WorkflowDefinitionManager(
|
||||
IWorkflowDefinitionStore store,
|
||||
INotificationSender notificationSender,
|
||||
IWorkflowDefinitionPublisher workflowPublisher,
|
||||
IIdentityGenerator identityGenerator)
|
||||
{
|
||||
_store = store;
|
||||
_notificationSender = notificationSender;
|
||||
_workflowPublisher = workflowPublisher;
|
||||
_identityGenerator = identityGenerator;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public async Task<long> DeleteByDefinitionIdAsync(string definitionId, CancellationToken cancellationToken = default)
|
||||
{
|
||||
await _notificationSender.SendAsync(new WorkflowDefinitionDeleting(definitionId), cancellationToken);
|
||||
await notificationSender.SendAsync(new WorkflowDefinitionDeleting(definitionId), cancellationToken);
|
||||
var filter = new WorkflowDefinitionFilter
|
||||
{
|
||||
DefinitionId = definitionId
|
||||
};
|
||||
var count = await _store.DeleteAsync(filter, cancellationToken);
|
||||
await _notificationSender.SendAsync(new WorkflowDefinitionDeleted(definitionId), cancellationToken);
|
||||
var count = await store.DeleteAsync(filter, cancellationToken);
|
||||
await notificationSender.SendAsync(new WorkflowDefinitionDeleted(definitionId), cancellationToken);
|
||||
return count;
|
||||
}
|
||||
|
||||
|
|
@ -49,7 +32,7 @@ public class WorkflowDefinitionManager : IWorkflowDefinitionManager
|
|||
{
|
||||
Id = id
|
||||
};
|
||||
var definition = await _store.FindAsync(filter, cancellationToken);
|
||||
var definition = await store.FindAsync(filter, cancellationToken);
|
||||
|
||||
if (definition == null)
|
||||
return false;
|
||||
|
|
@ -61,15 +44,15 @@ public class WorkflowDefinitionManager : IWorkflowDefinitionManager
|
|||
public async Task<long> BulkDeleteByDefinitionIdsAsync(IEnumerable<string> definitionIds, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var definitionIdList = definitionIds.Distinct().ToList();
|
||||
await _notificationSender.SendAsync(new WorkflowDefinitionsDeleting(definitionIdList), cancellationToken);
|
||||
await notificationSender.SendAsync(new WorkflowDefinitionsDeleting(definitionIdList), cancellationToken);
|
||||
var filter = new WorkflowDefinitionFilter
|
||||
{
|
||||
DefinitionIds = definitionIdList,
|
||||
IsReadonly = false
|
||||
};
|
||||
var count = await _store.DeleteAsync(filter, cancellationToken);
|
||||
var count = await store.DeleteAsync(filter, cancellationToken);
|
||||
await EnsureLastVersionIsLatestAsync(definitionIdList, cancellationToken);
|
||||
await _notificationSender.SendAsync(new WorkflowDefinitionsDeleted(definitionIdList), cancellationToken);
|
||||
await notificationSender.SendAsync(new WorkflowDefinitionsDeleted(definitionIdList), cancellationToken);
|
||||
return count;
|
||||
}
|
||||
|
||||
|
|
@ -77,19 +60,19 @@ public class WorkflowDefinitionManager : IWorkflowDefinitionManager
|
|||
public async Task<long> BulkDeleteByIdsAsync(IEnumerable<string> ids, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var idList = ids.ToList();
|
||||
var definitions = await _store.FindSummariesAsync(new WorkflowDefinitionFilter
|
||||
var definitions = await store.FindSummariesAsync(new WorkflowDefinitionFilter
|
||||
{
|
||||
Ids = idList
|
||||
}, cancellationToken);
|
||||
var definitionIds = definitions.Select(x => x.DefinitionId).Distinct().ToList();
|
||||
await _notificationSender.SendAsync(new WorkflowDefinitionVersionsDeleting(idList), cancellationToken);
|
||||
await notificationSender.SendAsync(new WorkflowDefinitionVersionsDeleting(idList), cancellationToken);
|
||||
var filter = new WorkflowDefinitionFilter
|
||||
{
|
||||
Ids = idList
|
||||
};
|
||||
var count = await _store.DeleteAsync(filter, cancellationToken);
|
||||
var count = await store.DeleteAsync(filter, cancellationToken);
|
||||
await EnsureLastVersionIsLatestAsync(definitionIds, cancellationToken);
|
||||
await _notificationSender.SendAsync(new WorkflowDefinitionVersionsDeleted(idList), cancellationToken);
|
||||
await notificationSender.SendAsync(new WorkflowDefinitionVersionsDeleted(idList), cancellationToken);
|
||||
return count;
|
||||
}
|
||||
|
||||
|
|
@ -101,7 +84,7 @@ public class WorkflowDefinitionManager : IWorkflowDefinitionManager
|
|||
DefinitionId = definitionId,
|
||||
VersionOptions = VersionOptions.SpecificVersion(versionToDelete)
|
||||
};
|
||||
var definitionToDelete = await _store.FindAsync(filter, cancellationToken);
|
||||
var definitionToDelete = await store.FindAsync(filter, cancellationToken);
|
||||
|
||||
if (definitionToDelete == null)
|
||||
return false;
|
||||
|
|
@ -114,22 +97,22 @@ public class WorkflowDefinitionManager : IWorkflowDefinitionManager
|
|||
{
|
||||
if (definitionToDelete.IsPublished)
|
||||
{
|
||||
await _workflowPublisher.RetractAsync(definitionToDelete, cancellationToken);
|
||||
await workflowPublisher.RetractAsync(definitionToDelete, cancellationToken);
|
||||
}
|
||||
|
||||
await _notificationSender.SendAsync(new WorkflowDefinitionVersionDeleting(definitionToDelete), cancellationToken);
|
||||
await notificationSender.SendAsync(new WorkflowDefinitionVersionDeleting(definitionToDelete), cancellationToken);
|
||||
|
||||
var filter = new WorkflowDefinitionFilter
|
||||
{
|
||||
Id = definitionToDelete.Id
|
||||
};
|
||||
var isDeleted = await _store.DeleteAsync(filter, cancellationToken) > 0;
|
||||
var isDeleted = await store.DeleteAsync(filter, cancellationToken) > 0;
|
||||
|
||||
if (!isDeleted)
|
||||
return false;
|
||||
|
||||
await EnsureLastVersionIsLatestAsync(definitionToDelete.DefinitionId, cancellationToken);
|
||||
await _notificationSender.SendAsync(new WorkflowDefinitionVersionDeleted(definitionToDelete), cancellationToken);
|
||||
await notificationSender.SendAsync(new WorkflowDefinitionVersionDeleted(definitionToDelete), cancellationToken);
|
||||
|
||||
return isDeleted;
|
||||
}
|
||||
|
|
@ -137,7 +120,7 @@ public class WorkflowDefinitionManager : IWorkflowDefinitionManager
|
|||
/// <inheritdoc />
|
||||
public Task<WorkflowDefinition> RevertVersionAsync(string definitionId, int version, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return _workflowPublisher.RevertVersionAsync(definitionId, version, cancellationToken);
|
||||
return workflowPublisher.RevertVersionAsync(definitionId, version, cancellationToken);
|
||||
}
|
||||
|
||||
private async Task EnsureLastVersionIsLatestAsync(IEnumerable<string> definitionIds, CancellationToken cancellationToken)
|
||||
|
|
@ -157,12 +140,12 @@ public class WorkflowDefinitionManager : IWorkflowDefinitionManager
|
|||
{
|
||||
DefinitionId = definitionId
|
||||
};
|
||||
var lastVersion = await _store.FindLastVersionAsync(filter, cancellationToken);
|
||||
var lastVersion = await store.FindLastVersionAsync(filter, cancellationToken);
|
||||
|
||||
if (lastVersion is null)
|
||||
return;
|
||||
|
||||
lastVersion.IsLatest = true;
|
||||
await _store.SaveAsync(lastVersion, cancellationToken);
|
||||
await store.SaveAsync(lastVersion, cancellationToken);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue