/** * {@inheritdoc} */ public function append($id, DomainEventStreamInterface $eventStream) { $this->connection->beginTransaction(); try { foreach ($eventStream as $event) { $this->appendEvent($event); } $this->connection->commit(); } catch (\Exception $e) { $this->connection->rollBack(); IlluminateEventStoreException::failedToAppend($e); } }
/** * Appends the message stream to the event store. * * @param mixed $identifier The aggregate identifier. * @param DomainEventStreamInterface $stream The stream of domain messages. * @throws LaravelStoreException When something went wrong * during persistence. * @return void */ public function append($identifier, DomainEventStreamInterface $stream) { // No-op to ensure that an error will be thrown early if the ID // is not something that can be converted to a string. (string) $identifier; try { $this->connection->beginTransaction(); // Make the domain messages database friendly.. $records = $this->streamSerializer->serialize($stream); // Now its time to persist them.. foreach ($records as $record) { $this->connection->table($this->tableName)->insert($record); } $this->connection->commit(); } catch (\Exception $exception) { // Oops, something went wrong $this->connection->rollBack(); $message = 'Error while persisting the domain events'; throw new LaravelStoreException($message, $exception); } }