Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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));
                }
            }
        }