From 8993b5daece017aa20276da66812dcaa76e11bc9 Mon Sep 17 00:00:00 2001 From: Bernard Ngandu <31113941+bernard-ng@users.noreply.github.com> Date: Mon, 20 Oct 2025 15:09:07 +0200 Subject: [PATCH] Normalize importer UUID handling for PostgreSQL --- .../Doctrine/Importer/ImportEngine.php | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/projects/backend/src/SharedKernel/Infrastructure/Persistence/Doctrine/Importer/ImportEngine.php b/projects/backend/src/SharedKernel/Infrastructure/Persistence/Doctrine/Importer/ImportEngine.php index 7aa587c..d484753 100644 --- a/projects/backend/src/SharedKernel/Infrastructure/Persistence/Doctrine/Importer/ImportEngine.php +++ b/projects/backend/src/SharedKernel/Infrastructure/Persistence/Doctrine/Importer/ImportEngine.php @@ -192,9 +192,8 @@ final readonly class ImportEngine $val = $row[$col] ?? null; if ($val !== null) { - // Convert BINARY(16) UUIDs to canonical RFC4122 if ($col === 'id' || str_ends_with((string) $col, '_id')) { - $params[$i++] = Uuid::fromBinary($val)->toString(); + $params[$i++] = $this->normalizeUuidValue($val); continue; } @@ -298,4 +297,25 @@ final readonly class ImportEngine return $converted !== false ? $converted : $value; } + + private function normalizeUuidValue(mixed $value): string + { + if ($value instanceof Uuid) { + return (string) $value; + } + + if (is_string($value)) { + if (strlen($value) === 16) { + $uuid = Uuid::fromBinary($value); + + return method_exists($uuid, 'toString') + ? $uuid->toString() + : $uuid->toRfc4122(); + } + + return $value; + } + + return (string) $value; + } }