Exemple #1
0
        public (CounterValueModel model, Version version) Load(IEventstore es, CounterValue query)
        {
            var counters = es.Replay(typeof(Incremented), typeof(Decremented)).Aggregate(
                new Dictionary <string, int>(),
                (dict, e) => {
                switch (e)
                {
                case Incremented i:
                    if (dict.ContainsKey(i.CounterId) is false)
                    {
                        dict[i.CounterId] = 0;
                    }
                    dict[i.CounterId] += 1;
                    break;

                case Decremented d:
                    dict[d.CounterId] -= 1;
                    break;
                }
                return(dict);
            });

            var model = new CounterValueModel();

            counters.TryGetValue(query.CounterId, out model.Value);
            return(model, null);
        }
Exemple #2
0
        public (Model model, Version version) Load(IEventstore es, AppendOperator command)
        {
            var model = Model.Neutral;

            foreach (var e in es.Replay())
            {
                switch (e)
                {
                case NumberUpdated nu:
                    model.Number = nu.Number;
                    model.NumberUpdatedAfterOp = true;
                    break;

                case ResultCalculated rc:
                    model.Result = rc.Number;
                    break;

                case OpAppended oa:
                    model.PreviousOperator     = oa.ToEnum();
                    model.NumberUpdatedAfterOp = false;
                    break;
                }
            }
            return(model, null);
        }
Exemple #3
0
        public ToDosQueryResult Handle(ToDosQuery query)
        {
            return(new ToDosQueryResult {
                ToDoList = Load()
            });


            IEnumerable <(string EntityId, string Subject, bool Done)> Load()
            {
                var entities = new Dictionary <string, (string Subject, bool Done)>();

                foreach (var e in _es.Replay())
                {
                    switch (e)
                    {
                    case ToDoCreated tdc:
                        entities[tdc.Id.Value.ToString()] = (tdc.Subject, false);
                        break;

                    case ToDoDone tdd:
                        entities[tdd.ToDoId] = (entities[tdd.ToDoId].Subject, true);
                        break;
                    }
                }
                return(entities.Select(x => (x.Key, x.Value.Subject, x.Value.Done)));
            }
        }
 public void Update(IEventstore es, Event[] events, Version version)
 {
     if (events.Any() is false)
     {
         events = es.Replay(typeof(Incremented)).ToArray();
     }
     events.Where(e => e is Incremented).ToList()
     .ForEach(e => _counterIds.Add(((Incremented)e).CounterId));
 }
        public (Model model, Version version) Load(IEventstore es, Decrement command)
        {
            var model = new Model {
                RegisteredNames = new HashSet <string>(
                    es.Replay(typeof(Incremented)).OfType <Incremented>().Select(x => x.Name)
                    )
            };

            return(model, null);
        }
Exemple #6
0
        private void DumpES(IEventstore es)
        {
            _testOutputHelper.WriteLine("<<<");
            var i = 1;

            foreach (var e in es.Replay().Events)
            {
                _testOutputHelper.WriteLine($"{++i}: {e}");
            }
            _testOutputHelper.WriteLine(">>>");
        }
        public Context(IEventstore es, string gameId)
        {
            Events = es.Replay()
                     .OfType <IntraGameEvent>()
                     .Where(x => x.GameId == gameId)
                     .ToArray();

            var eStarted = Events[0] as GameStarted;

            NamePlayerX = eStarted.NamePlayerX;
            NamePlayerO = eStarted.NamePlayerO;
        }
        public (IMessageContextModel Ctx, string Version) Load(IMessage msg)
        {
            var flashcards = new Dictionary <string, DueCardFoundQueryResult>();
            var dueCardId  = "";

            foreach (var e in _es.Replay().Events)
            {
                switch (e)
                {
                case NewCardEncountered nce:
                    flashcards[nce.Id] = new DueCardFoundQueryResult()
                    {
                        CardId   = nce.Id,
                        Question = nce.Question,
                        Answer   = nce.Answer,
                        Tags     = nce.Tags
                    };
                    break;

                case CardWasChanged cwc:
                    var card = flashcards[cwc.CardId];
                    card.Question = cwc.Question;
                    card.Answer   = cwc.Answer;
                    card.Tags     = cwc.Tags;
                    break;

                case CardFoundMissing cfm:
                    flashcards.Remove(cfm.CardId);
                    break;

                case CardMovedTo cmt:
                    flashcards[cmt.CardId].BinIndex = cmt.BinIndex;
                    if (cmt.CardId == dueCardId)
                    {
                        dueCardId = "";
                    }
                    break;

                case DueCardSelected dcs:
                    dueCardId = dcs.CardId;
                    break;
                }
            }

            return(flashcards.TryGetValue(dueCardId, out var dueCard)
                    ? (new DueCardContextModel {
                DueCard = dueCard
            }, "")
                    : (new DueCardContextModel {
                DueCard = null
            }, ""));
        }