Example #1
0
        public static async IAsyncEnumerable <AlmostOrderedArticlesState.ShoppingCartArticleRemovedInfo> AnalyseAlmostOrderedWithState(IPersistenceEngine engine = null)
        {
            engine = engine ?? Program.engine;

            var loadedMessages = await engine.LoadStreamEntriesAsync(
                0,
                int.MaxValue, new[]
            {
                typeof(ShoppingCartCreated),
                typeof(ShoppingCartArticleRemoved),
                typeof(ShoppingCartOrdered),
                typeof(ShoppingCartCancelled)
            })
                                 .Select(x => engine.Serializer.Deserialize(x.Payload))
                                 .ToListAsync();

            Console.WriteLine("Removed Articles: ");
            var almostOrderedState = AlmostOrderedArticlesState.LoadState((AlmostOrderedArticlesState)null,
                                                                          loadedMessages);

            var removedArticles = almostOrderedState
                                  .AlmostOrderedShoppingCartArticles
                                  .ToList();

            var groupedByCustomer =
                removedArticles
                .GroupBy(x => x.CustomerName)
                .Select(x => new
            {
                CustomerName   = x.Key,
                Articlenumbers = x.GroupBy(y => y.Articlenumber)
                                 .Select(y => new
                {
                    Count         = y.Count(),
                    Articlenumber = y.Key
                })
                                 .ToList()
            })
                .ToList();

            foreach (var item in groupedByCustomer)
            {
                Console.WriteLine($"{item.CustomerName}: {string.Join(", ", item.Articlenumbers.Select(x => "" + x.Count + "x " + x.Articlenumber))} ");
            }
            Console.WriteLine();

            foreach (var item in removedArticles)
            {
                yield return(item);
            }
        }
        protected async Task FixTestDataAsync()
        {
            var rawStreamEntries = await persistenceEngine.LoadStreamEntriesAsync()
                                   .ToListAsync();

            foreach (var entry in rawStreamEntries)
            {
                var testData = testEvents.First(x => x.MessageId == entry.MessageId);

                testData.CommitId         = entry.CommitId;
                testData.CheckpointNumber = entry.CheckpointNumber;
                testData.StreamRevision   = entry.StreamRevision;
            }
        }
        public async Task Can_save_and_load_stream_entry()
        {
            var expected = config.WriteModel.GenerateRawStreamEntry();

            var number = await persistenceEngine.GetCurrentEventStoreCheckpointNumberAsync();

            number.Should().Be(-1);

            await persistenceEngine.SaveStreamEntriesAsync(new[] { expected });

            var streamEntry = await persistenceEngine.LoadStreamEntriesAsync()
                              .FirstAsync();

            streamEntry.Payload.Should().Be(expected.Payload);
        }