using Elsa.Mediator.Contracts; using Elsa.Workflows.Runtime.Filters; using Elsa.Workflows.Runtime.Notifications; using Microsoft.Extensions.Logging; namespace Elsa.Workflows.Runtime.Services; /// /// Default implementation of . /// public class DefaultBookmarkManager(IBookmarkStore bookmarkStore, INotificationSender notificationSender, ILogger logger) : IBookmarkManager { /// public async Task DeleteManyAsync(BookmarkFilter filter, CancellationToken cancellationToken = default) { var bookmarks = (await bookmarkStore.FindManyAsync(filter, cancellationToken)).ToList(); await notificationSender.SendAsync(new BookmarksDeleting(bookmarks), cancellationToken); var count = await bookmarkStore.DeleteAsync(filter, cancellationToken); await notificationSender.SendAsync(new BookmarksDeleted(bookmarks), cancellationToken); if (logger.IsEnabled(LogLevel.Debug)) foreach (var bookmark in bookmarks) logger.LogDebug("Deleted bookmark {BookmarkId} for workflow {WorkflowInstanceId}", bookmark.Id, bookmark.WorkflowInstanceId); return count; } }