public async Task HandleAsync(TRequest request) { foreach (var preRequestHandler in _preRequestHandlers) { preRequestHandler.Handle(request); } await _inner.HandleAsync(request); foreach (var postRequestHandler in _postRequestHandlers) { postRequestHandler.Handle(request); } }
public async Task <TResponse> HandleAsync(TRequest request) { foreach (var preRequestHandler in _preRequestHandlers) { preRequestHandler.Handle(request); } var result = await _inner.HandleAsync(request); foreach (var postRequestResponseHandler in _postRequestResponseHandlers) { postRequestResponseHandler.Handle(request, result); } return(result); }
public async Task UpdateAsync() { var handleType = _handler.GetType(); var domainEventType = $"{handleType.Name}-{typeof(TSubscribedDomainEvent).Name}"; var lastVersion = await _versionRepository.GetVersionAsync(domainEventType); var latestEvents = await _eventFeed.GetEventsAsync(lastVersion); foreach (var latestEvent in latestEvents) { if (latestEvent.DomainEvent is TSubscribedDomainEvent domainEvent) { await _handler.HandleAsync(domainEvent); await _versionRepository.SaveVersion(new LastProcessedVersion(domainEventType, latestEvent.OverallVersion)); } } }