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); }
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); }
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); }
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 }, "")); }