/** * @param IEvent $event * * @return IEvent */ public function save(IEvent $event) { $this->latestEvent = $event; if (null === $event->getId()) { $event->setId((string) Uuid::uuid4()); } $filename = sprintf('%s.%s.event', $this->prepareFilename($event->getEndpoint()), $event->getId()); $file = null; try { $filePath = $this->directory . '/' . $filename; if (!file_exists($filePath)) { $this->writer->open($filePath, 'w+'); $this->writer->write($event->getMethod() . ' ' . $event->getEndpoint() . PHP_EOL); $this->writer->write($event->getReference() . PHP_EOL); $this->writer->write($event->getRequest() . PHP_EOL); } else { $this->writer->open($filePath, 'a'); $this->writer->write($event->getLatency() . PHP_EOL); $this->writer->write($event->getResponse() . PHP_EOL); } } catch (Exception $e) { if (null !== $this->logger) { $this->logger->error($e); } } finally { if ($this->writer->isOpen()) { $this->writer->close(); } } return $event; }
function it_saves_updated_events(IEvent $event, PDO $connection, PDOStatement $statement) { $event->getId()->shouldBeCalled()->willReturn(12); $event->getResponse()->shouldBeCalled()->willReturn('response'); $event->getLatency()->shouldBeCalled()->willReturn(0.12); $connection->prepare('UPDATE table SET response = :response, SET latency = :latency WHERE id = :id')->shouldBeCalled()->willReturn($statement); $statement->execute([':id' => 12, ':response' => 'response', ':latency' => 0.12])->shouldBeCalled(); $statement->columnCount()->shouldBeCalled()->willReturn(1); $this->save($event); }
/** * Update event. * * @param IEvent $event * * @return bool */ protected function update(IEvent $event) { $statement = $this->connection->prepare('UPDATE ' . $this->table . ' SET response = :response, SET latency = :latency WHERE id = :id'); $statement->execute([':id' => $event->getId(), ':response' => $event->getResponse(), ':latency' => $event->getLatency()]); return $statement->columnCount() === 1; }