using System.Linq; using System.Threading; using System.Threading.Tasks; using Elsa.Extensions; using Elsa.Http.Contracts; using Elsa.Workflows.Core.Helpers; using Elsa.Workflows.Runtime.Contracts; using Elsa.Workflows.Runtime.Filters; namespace Elsa.Http.Services; /// public class DefaultRouteTableUpdater : IRouteTableUpdater { private readonly IRouteTable _routeTable; private readonly ITriggerStore _triggerStore; private readonly IBookmarkStore _bookmarkStore; /// /// Initializes a new instance of the class. /// public DefaultRouteTableUpdater(IRouteTable routeTable, ITriggerStore triggerStore, IBookmarkStore bookmarkStore) { _routeTable = routeTable; _triggerStore = triggerStore; _bookmarkStore = bookmarkStore; } /// public async Task UpdateAsync(CancellationToken cancellationToken = default) { var bookmarkName = ActivityTypeNameHelper.GenerateTypeName(); var triggerFilter = new TriggerFilter { Name = bookmarkName }; var bookmarkFilter = new BookmarkFilter { ActivityTypeName = bookmarkName}; var triggers = (await _triggerStore.FindManyAsync(triggerFilter, cancellationToken)).ToList(); var bookmarks = (await _bookmarkStore.FindManyAsync(bookmarkFilter, cancellationToken)).ToList(); _routeTable.AddRoutes(triggers); _routeTable.AddRoutes(bookmarks); } }