コード例 #1
0
 /**
  * @param Identifier $id
  * @return DomainEventStream
  * @throws EventStreamNotFound
  */
 public function load(Identifier $id)
 {
     $cursor = $this->collection->find(['aggregate_id' => (string) $id])->sort(['sequence' => 1]);
     $messages = [];
     foreach ($cursor as $message) {
         $serialized = new SerializedMessageObject($message['aggregate_id'], $message['sequence'], $message['name'], $message['payload'], $message['meta_data'], $message['occurred_on']);
         $messages[] = $this->serializer->deserialize($serialized);
     }
     if (!count($messages)) {
         throw EventStreamNotFound::forIdentifier($id);
     }
     $stream = new GenericDomainEventStream(...$messages);
     return $stream;
 }
コード例 #2
0
 /**
  * @param Identifier $id
  * @return DomainEventStream
  * @throws EventStreamNotFound
  */
 public function load(Identifier $id)
 {
     $statement = $this->pdo->prepare('SELECT * FROM event_store WHERE aggregate_id = ? ORDER BY sequence ASC');
     $statement->execute([(string) $id]);
     $messages = [];
     foreach ($statement->fetchAll() as $message) {
         $serialized = new SerializedMessageObject($message['aggregate_id'], $message['sequence'], $message['name'], json_decode($message['payload'], true), json_decode($message['meta_data'], true), $message['occurred_on']);
         $messages[] = $this->serializer->deserialize($serialized);
     }
     if (!count($messages)) {
         throw EventStreamNotFound::forIdentifier($id);
     }
     $stream = new GenericDomainEventStream(...$messages);
     return $stream;
 }
コード例 #3
0
 /**
  * @covers \PhpCqrs\Event\Store\Exception\EventStreamNotFound::forIdentifier
  */
 public function testCanConstructForIdentifier()
 {
     $exception = EventStreamNotFound::forIdentifier(new StringIdentifier('1234'));
     $this->assertInstanceOf(EventStreamNotFound::class, $exception);
     $this->assertSame('No domain event stream found for identifier "1234".', $exception->getMessage());
 }