Пример #1
0
        /// <summary>
        /// Add multiple events to the stream
        /// </summary>
        /// <typeparam name="T">Type of the aggregate</typeparam>
        /// <param name="id">The id of the aggregate</param>
        /// <param name="events">The events to add</param>
        public async Task Add <T>(Guid id, IEnumerable <Event> events)
        {
            var streamId = StreamId <T>(id);

            using var aes = await GetAes(streamId, true);

            await _eventStore.Add(streamId, await Task.WhenAll(events.Select(async @event => await Encrypt(aes, @event))));

            if (events.Any(@event => @event is IProtectedDataDeletionEvent))
            {
                await _keyStore.Delete(streamId, DeleteAfter);
            }
        }