using Elsa.Mediator.Contracts; using Elsa.Workflows.Runtime.Entities; using Elsa.Workflows.Runtime.Filters; using Elsa.Workflows.Runtime.Notifications; using Microsoft.Extensions.Logging; namespace Elsa.Workflows.Runtime; /// /// 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; } /// public async Task SaveAsync(StoredBookmark bookmark, CancellationToken cancellationToken = default) { await notificationSender.SendAsync(new BookmarkSaving(bookmark), cancellationToken); await bookmarkStore.SaveAsync(bookmark, cancellationToken); await notificationSender.SendAsync(new BookmarkSaved(bookmark), cancellationToken); } }