示例#1
0
 /**
  * @param string $identifier
  * @param DomainEvent[] $changes
  * @throws OptimisticLockException
  */
 public function append($identifier, array $changes)
 {
     $events = [];
     $version = NULL;
     /** @var DomainEvent $event */
     foreach ($changes as $event) {
         if ($version === NULL) {
             $version = $event->version;
         }
         $events[] = $this->eventTranslator->toWritableEvent($event);
     }
     try {
         $this->eventStore->writeToStream($identifier, new WritableEventCollection($events), $version - 1);
     } catch (WrongExpectedVersionException $e) {
         throw new OptimisticLockException($e->getMessage(), 1427104266);
     }
 }
/**
 * @param  int    $length
 * @param  array  $metadata
 * @return string
 */
function prepare_test_stream(EventStore $es, $length = 1, $metadata = [])
{
    $streamName = uniqid();
    $events = [];
    for ($i = 0; $i < $length; ++$i) {
        $events[] = WritableEvent::newInstance('Foo', ['foo' => 'bar'], $metadata);
    }
    $collection = new WritableEventCollection($events);
    $es->writeToStream($streamName, $collection);
    return $streamName;
}