/** * @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; }