/** * @param Contract $streamContract * @param Identifier $streamId * @return EventEnvelope[] */ public function fetch(Contract $streamContract, Identifier $streamId) { $records = $this->connection->fetchAll(Query\Select::from(self::TABLE_NAME), ['streamContract' => $streamContract, 'streamId' => $streamId]); $eventEnvelopes = array_map(function (array $record) { return EventEnvelope::reconstitute(EventId::fromString($record['eventId']), Contract::with($record['eventContract']), $record['eventPayload']); }, $records); return $eventEnvelopes; }