using Elsa.Mediator.Contracts;
using Elsa.Workflows.Runtime.Notifications;
using Elsa.Workflows.Runtime.Requests;
namespace Elsa.Workflows.Runtime;
///
public class BookmarksPersister(IBookmarkUpdater bookmarkUpdater, INotificationSender notificationSender) : IBookmarksPersister
{
///
public async Task PersistBookmarksAsync(UpdateBookmarksRequest updateBookmarksRequest)
{
await bookmarkUpdater.UpdateBookmarksAsync(updateBookmarksRequest);
// Publish domain event.
await notificationSender.SendAsync(new WorkflowBookmarksIndexed(new(
updateBookmarksRequest.WorkflowExecutionContext,
updateBookmarksRequest.Diff.Added,
updateBookmarksRequest.Diff.Removed,
updateBookmarksRequest.Diff.Unchanged)));
// Publish domain event.
await notificationSender.SendAsync(new WorkflowBookmarksPersisted(updateBookmarksRequest.Diff));
}
}