/** * {@inheritdoc} */ public function read(Identifies $aggregateId) { $statement = $this->prepareSelectStatement(); $statement->bindValue('aggregate_id', (string) $aggregateId, Type::GUID); $statement->execute(); $envelopes = []; while ($row = $statement->fetch(PDO::FETCH_ASSOC)) { $eventName = $row['event_name']; $eventClass = $this->eventNameResolver->resolveEventClass($eventName); $event = $this->serializer->deserialize($row['event_payload'], $eventClass); $metadata = $this->serializer->deserialize($row['metadata'], 'SimpleES\\EventSourcing\\Metadata\\Metadata'); $envelopes[] = EventEnvelope::fromStore(EventId::fromString($row['event_id']), $eventName, $event, $aggregateId, (int) $row['aggregate_version'], Timestamp::fromString($row['took_place_at']), $metadata); } if (!$envelopes) { throw AggregateIdNotFound::create($aggregateId); } return new EventStream($aggregateId, $envelopes); }
/** * @param Identifies $aggregateId * * @return EventStream */ private function createEventStream(Identifies $aggregateId) { $envelope1 = EventEnvelope::envelop(EventId::fromString('246cc06b-c60f-40da-ab58-ef7b5502eb74'), 'an_event_happened', Mockery::mock('SimpleES\\EventSourcing\\Event\\DomainEvent'), $aggregateId, 0); $envelope2 = EventEnvelope::envelop(EventId::fromString('4b4806a5-a99f-425f-b83e-ed49621d29d3'), 'another_event_happened', Mockery::mock('SimpleES\\EventSourcing\\Event\\DomainEvent'), $aggregateId, 1); $envelope3 = EventEnvelope::envelop(EventId::fromString('20454ed7-e524-469a-b7a9-5c42c94bdfdd'), 'yet_another_event_happened', Mockery::mock('SimpleES\\EventSourcing\\Event\\DomainEvent'), $aggregateId, 2); $eventStream = new EventStream($aggregateId, [$envelope1, $envelope2, $envelope3]); return $eventStream; }