if (!
$currentCurrencyIso) { throw new ShopConfigurationException('Default currency not found'
);
} if (\
mb_strtoupper((string) $currentCurrencyIso) === \
mb_strtoupper($currencyCode)) { return;
} $newDefaultCurrencyId =
$this->
getCurrencyId($currencyCode);
if (!
$newDefaultCurrencyId) { $newDefaultCurrencyId =
$this->
createNewCurrency($currencyCode);
} RetryableTransaction::
retryable($this->connection,
function DConnection
$conn) use ($newDefaultCurrencyId,
$currencyCode): void
{ $stmt =
$conn->
prepare('UPDATE currency SET id = :newId WHERE id = :oldId'
);
// assign new uuid to old DEFAULT
$stmt->
executeStatement([ 'newId' => Uuid::
randomBytes(),
'oldId' => Uuid::
fromHexToBytes(Defaults::CURRENCY
),
]);