/**
  * @param Uuid $messageId
  * @return null|MessageLogEntry
  */
 public function getEntryForMessageId(Uuid $messageId)
 {
     if (isset($this->entriesByMessageId[$messageId->toString()])) {
         return $this->entriesByMessageId[$messageId->toString()];
     }
     $query = $this->connection->createQueryBuilder();
     $query->select('*')->from(self::TABLE_NAME)->where($query->expr()->eq('message_id', ':message_id'));
     $query->setParameter('message_id', $messageId->toString());
     $entryData = $query->execute()->fetch(\PDO::FETCH_ASSOC);
     if (!$entryData) {
         return null;
     }
     $entry = MessageLogEntry::fromArray($entryData);
     $this->entriesByMessageId[$messageId->toString()] = $entry;
     return $entry;
 }
 /**
  * @test
  * @dataProvider provideEntries
  */
 public function it_can_be_converted_to_array_and_back(MessageLogEntry $entry)
 {
     $entryData = $entry->toArray();
     $copiedEntry = MessageLogEntry::fromArray($entryData);
     $this->assertTrue($entry->messageId()->equals($copiedEntry->messageId()));
     $this->assertEquals($entry->messageName(), $copiedEntry->messageName());
     $this->assertEquals($entry->version(), $copiedEntry->version());
     $this->assertEquals($entry->loggedAt()->format('Y-m-d\\TH:i:s.uO'), $copiedEntry->loggedAt()->format('Y-m-d\\TH:i:s.uO'));
     if (is_null($entry->taskListPosition())) {
         $this->assertNull($copiedEntry->taskListPosition());
     } else {
         $this->assertTrue($entry->taskListPosition()->equals($copiedEntry->taskListPosition()));
     }
     if (is_null($entry->processId())) {
         $this->assertNull($copiedEntry->processId());
     } else {
         $this->assertTrue($entry->processId()->equals($copiedEntry->processId()));
     }
     $this->assertEquals($entry->status()->toString(), $copiedEntry->status()->toString());
     $this->assertEquals($entry->status()->failureMsg(), $copiedEntry->status()->failureMsg());
 }