From c0c128f9af2d89e9049ae0bc48e345949a048065 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Wed, 22 Jul 2026 15:55:06 +1200 Subject: [PATCH] fix: only fill missing vectorsdb dimension, omit null from serialization syncVectorDimension now only writes when the collection's dimension is the placeholder, so a second vector column can't overwrite an archived value, and Collection::jsonSerialize omits dimension when unset so non-vector collection lines keep their previous shape. Co-Authored-By: Claude Fable 5 --- src/Migration/Destinations/Appwrite.php | 2 +- src/Migration/Resources/Database/Collection.php | 10 +++++++--- tests/Migration/Unit/Resources/CollectionTest.php | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Migration/Destinations/Appwrite.php b/src/Migration/Destinations/Appwrite.php index f6c89809..d816c1ad 100644 --- a/src/Migration/Destinations/Appwrite.php +++ b/src/Migration/Destinations/Appwrite.php @@ -1335,7 +1335,7 @@ private function syncVectorDimension(Column|Attribute $resource, string $type, U return; } - if ((int) $table->getAttribute('dimension', 0) === $resource->getSize()) { + if ((int) $table->getAttribute('dimension', 0) !== 0) { return; } diff --git a/src/Migration/Resources/Database/Collection.php b/src/Migration/Resources/Database/Collection.php index 25dedf93..46a433e3 100644 --- a/src/Migration/Resources/Database/Collection.php +++ b/src/Migration/Resources/Database/Collection.php @@ -72,8 +72,12 @@ public function setDimension(?int $dimension): self */ public function jsonSerialize(): array { - return array_merge(parent::jsonSerialize(), [ - 'dimension' => $this->dimension, - ]); + $data = parent::jsonSerialize(); + + if ($this->dimension !== null) { + $data['dimension'] = $this->dimension; + } + + return $data; } } diff --git a/tests/Migration/Unit/Resources/CollectionTest.php b/tests/Migration/Unit/Resources/CollectionTest.php index f89ed938..faa4edc3 100644 --- a/tests/Migration/Unit/Resources/CollectionTest.php +++ b/tests/Migration/Unit/Resources/CollectionTest.php @@ -53,6 +53,6 @@ public function testDimensionDefaultsToNull(): void ]); $this->assertNull($collection->getDimension()); - $this->assertNull($collection->jsonSerialize()['dimension']); + $this->assertArrayNotHasKey('dimension', $collection->jsonSerialize()); } }