Skip to content

Commit

Permalink
Fixed SQL query in MysqlRepository::addToToc() when ATTR_EMULATE_PREP…
Browse files Browse the repository at this point in the history
…ARES is set to false (closes #23).
  • Loading branch information
parpalak committed Nov 5, 2023
1 parent 4d8a93a commit e821cf7
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 10 deletions.
29 changes: 19 additions & 10 deletions src/S2/Rose/Storage/Database/MysqlRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -109,20 +109,29 @@ public function addToToc(TocEntry $entry, ExternalId $externalId): void
$sql = 'INSERT INTO ' . $this->getTableName(self::TOC) .
' (external_id, instance_id, title, description, added_at, timezone, url, relevance_ratio, hash)' .
' VALUES (:external_id, :instance_id, :title, :description, :added_at, :timezone, :url, :relevance_ratio, :hash)' .
' ON DUPLICATE KEY UPDATE title = :title, description = :description, added_at = :added_at, timezone = :timezone, url = :url, relevance_ratio = :relevance_ratio, hash = :hash';
' ON DUPLICATE KEY UPDATE title = :title2, description = :description2, added_at = :added_at2, timezone = :timezone2, url = :url2, relevance_ratio = :relevance_ratio2, hash = :hash2';

try {
$statement = $this->pdo->prepare($sql);
$statement->execute([
'external_id' => $externalId->getId(),
'instance_id' => (int)$externalId->getInstanceId(),
'title' => $entry->getTitle(),
'description' => $entry->getDescription(),
'added_at' => $entry->getFormattedDate(),
'timezone' => $entry->getTimeZone(),
'url' => $entry->getUrl(),
'relevance_ratio' => $entry->getRelevanceRatio(),
'hash' => $entry->getHash(),
'external_id' => $externalId->getId(),
'instance_id' => (int)$externalId->getInstanceId(),

'title' => $entry->getTitle(),
'description' => $entry->getDescription(),
'added_at' => $entry->getFormattedDate(),
'timezone' => $entry->getTimeZone(),
'url' => $entry->getUrl(),
'relevance_ratio' => $entry->getRelevanceRatio(),
'hash' => $entry->getHash(),

'title2' => $entry->getTitle(),
'description2' => $entry->getDescription(),
'added_at2' => $entry->getFormattedDate(),
'timezone2' => $entry->getTimeZone(),
'url2' => $entry->getUrl(),
'relevance_ratio2' => $entry->getRelevanceRatio(),
'hash2' => $entry->getHash(),
]);
} catch (\PDOException $e) {
if ($e->getCode() === '42S02') {
Expand Down
1 change: 1 addition & 0 deletions tests/unit/Rose/Storage/PdoStorageTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ public function testParallelProcesses()
public function testUpdateToc(): void
{
$storage = new PdoStorage($this->pdo, 'test_');
$this->pdo->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);
$storage->erase();

$externalId = new ExternalId('id_1');
Expand Down

0 comments on commit e821cf7

Please sign in to comment.