/** * @param Contract $streamContract * @param Identifier $streamId * @return EventEnvelope[] */ public function fetch(Contract $streamContract, Identifier $streamId) { return _\toArray(_\map($this->toEventEnvelope(), _\filter($this->belongsToStream($streamContract, $streamId), $this->records))); }
/** * @param Contract $aggregateContract * @param Identifier $aggregateId * @return Aggregate */ private function findTrackedAggregate(Contract $aggregateContract, Identifier $aggregateId) { $aggregates = _\toArray(_\filter(function (Aggregate $aggregate) use($aggregateContract, $aggregateId) { return $aggregate->isIdentifiedBy($aggregateContract, $aggregateId); }, $this->trackedAggregates)); // ugh I'm missing all kinds of FP shizzle to make this pretty. Maybe later. /** @var Aggregate $aggregate */ $aggregate = count($aggregates) ? $aggregates[0] : null; return $aggregate; }