From 47408f04dc810e4499fbca0d2d9c14be1a913085 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Fri, 20 Mar 2026 17:24:21 +1300 Subject: [PATCH] fix: always cast $sequence to string for SDK type safety MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Revert the is_int preservation — SDKs declare $sequence as string, so the API must always return a string. Updated tests to match. Co-Authored-By: Claude Opus 4.6 (1M context) --- src/Appwrite/Utopia/Response/Model/Document.php | 3 +-- src/Appwrite/Utopia/Response/Model/Row.php | 3 +-- tests/e2e/Services/Databases/DatabasesBase.php | 8 ++------ 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/Appwrite/Utopia/Response/Model/Document.php b/src/Appwrite/Utopia/Response/Model/Document.php index 544c956d5d..3be003418d 100644 --- a/src/Appwrite/Utopia/Response/Model/Document.php +++ b/src/Appwrite/Utopia/Response/Model/Document.php @@ -84,8 +84,7 @@ class Document extends Any $document->removeAttribute('$tenant'); if (!$document->isEmpty()) { - $sequence = $document->getAttribute('$sequence', ''); - $document->setAttribute('$sequence', \is_int($sequence) ? $sequence : (string)$sequence); + $document->setAttribute('$sequence', (string)$document->getAttribute('$sequence', '')); } foreach ($document->getAttributes() as $attribute) { diff --git a/src/Appwrite/Utopia/Response/Model/Row.php b/src/Appwrite/Utopia/Response/Model/Row.php index fbac1a825b..4c7426c4bc 100644 --- a/src/Appwrite/Utopia/Response/Model/Row.php +++ b/src/Appwrite/Utopia/Response/Model/Row.php @@ -84,8 +84,7 @@ class Row extends Any $document->removeAttribute('$tenant'); if (!$document->isEmpty()) { - $sequence = $document->getAttribute('$sequence', ''); - $document->setAttribute('$sequence', \is_int($sequence) ? $sequence : (string)$sequence); + $document->setAttribute('$sequence', (string)$document->getAttribute('$sequence', '')); } foreach ($document->getAttributes() as $column) { diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index 7f23f2966c..aecad983de 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -2566,9 +2566,7 @@ trait DatabasesBase $this->assertEquals($document1['body']['birthDay'], '1975-06-12T12:12:55.000+00:00'); $this->assertTrue(array_key_exists('$sequence', $document1['body'])); - $this->getSupportForIntegerIds() - ? $this->assertIsInt($document1['body']['$sequence']) - : $this->assertIsString($document1['body']['$sequence']); + $this->assertIsString($document1['body']['$sequence']); $this->assertEquals(201, $document2['headers']['status-code']); $this->assertEquals($data['moviesId'], $document2['body'][$this->getContainerIdResponseKey()]); @@ -2640,9 +2638,7 @@ trait DatabasesBase /** * Resubmit same document, nothing to update */ - $this->getSupportForIntegerIds() - ? $this->assertIsInt($document['body']['$sequence']) - : $this->assertIsString($document['body']['$sequence']); + $this->assertIsString($document['body']['$sequence']); $upsertData = [ 'title' => 'Thor: Ragnarok',