Skip to content

Commit

Permalink
Processed Updates Service minor performance improvement
Browse files Browse the repository at this point in the history
  • Loading branch information
chrispenny committed Oct 1, 2023
1 parent 0377266 commit eb19d8b
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 14 deletions.
6 changes: 3 additions & 3 deletions src/Services/CacheProcessingService.php
Original file line number Diff line number Diff line change
Expand Up @@ -163,13 +163,13 @@ private function alreadyProcessed(string $className, int $id): bool
return false;
}

// We are in a "Draft" context, so we don't care whether or not the ProcessedUpdateDTO has been published or
// not. Its existence means that it has been processed
// We are in a "Draft" context, so we don't care whether the ProcessedUpdateDTO has been published or not. Its
// existence means that it has been processed
if (!$this->shouldPublishUpdates()) {
return true;
}

// We are in a "Live" context, so we need to return whether or not this ProcessedUpdateDTO has been published
// We are in a "Live" context, so we need to return whether this ProcessedUpdateDTO has been published
return $processedUpdate->isPublished();
}

Expand Down
21 changes: 10 additions & 11 deletions src/Services/ProcessedUpdatesService.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,21 +24,15 @@ public function getProcessedUpdates(): array

public function addProcessedUpdate(ProcessedUpdateDto $processedUpdate): void
{
$this->processedUpdates[] = $processedUpdate;
$key = $this->getProcessedUpdateKey($processedUpdate->getClassName(), $processedUpdate->getId());
$this->processedUpdates[$key] = $processedUpdate;
}

public function findProcessedUpdate(string $className, int $id): ?ProcessedUpdateDto
{
foreach ($this->processedUpdates as $processedUpdate) {
$classNameMatches = $processedUpdate->getClassName() === $className;
$idMatches = $processedUpdate->getId() === $id;
$key = $this->getProcessedUpdateKey($className, $id);

if ($idMatches && $classNameMatches) {
return $processedUpdate;
}
}

return null;
return $this->processedUpdates[$key] ?? null;
}

public function findOrCreateProcessedUpdate(string $className, int $id): ProcessedUpdateDto
Expand All @@ -50,9 +44,14 @@ public function findOrCreateProcessedUpdate(string $className, int $id): Process
}

$processedUpdate = new ProcessedUpdateDto($className, $id);
$this->processedUpdates[] = $processedUpdate;
$this->addProcessedUpdate($processedUpdate);

return $processedUpdate;
}

private function getProcessedUpdateKey(string $className, int $id): string
{
return sprintf('%s-%s', $className, $id);
}

}

0 comments on commit eb19d8b

Please sign in to comment.