From 227515c6b13f62e9732308b0d324263b6e691e2b Mon Sep 17 00:00:00 2001 From: fogelito Date: Wed, 16 Jul 2025 08:30:50 +0300 Subject: [PATCH 1/4] Cast internals --- src/Database/Adapter/MariaDB.php | 2 +- src/Database/Adapter/Postgres.php | 2 +- src/Database/Adapter/SQL.php | 2 +- src/Database/Database.php | 2 ++ 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Database/Adapter/MariaDB.php b/src/Database/Adapter/MariaDB.php index 708926548..f6bb8e97d 100644 --- a/src/Database/Adapter/MariaDB.php +++ b/src/Database/Adapter/MariaDB.php @@ -1644,7 +1644,7 @@ public function find(string $collection, array $queries = [], ?int $limit = 25, unset($results[$index]['_id']); } if (\array_key_exists('_tenant', $document)) { - $results[$index]['$tenant'] = $document['_tenant'] === null ? null : (int)$document['_tenant']; + $results[$index]['$tenant'] = $document['_tenant'] === null ? null : $document['_tenant']; unset($results[$index]['_tenant']); } if (\array_key_exists('_createdAt', $document)) { diff --git a/src/Database/Adapter/Postgres.php b/src/Database/Adapter/Postgres.php index aad33c42e..e175b6a1b 100644 --- a/src/Database/Adapter/Postgres.php +++ b/src/Database/Adapter/Postgres.php @@ -1529,7 +1529,7 @@ public function find(string $collection, array $queries = [], ?int $limit = 25, unset($results[$index]['_id']); } if (\array_key_exists('_tenant', $document)) { - $results[$index]['$tenant'] = $document['_tenant'] === null ? null : (int)$document['_tenant']; + $results[$index]['$tenant'] = $document['_tenant'] === null ? null : $document['_tenant']; unset($results[$index]['_tenant']); } if (\array_key_exists('_createdAt', $document)) { diff --git a/src/Database/Adapter/SQL.php b/src/Database/Adapter/SQL.php index 31bc7e6a3..fcdb5e1d5 100644 --- a/src/Database/Adapter/SQL.php +++ b/src/Database/Adapter/SQL.php @@ -377,7 +377,7 @@ public function getDocument(string $collection, string $id, array $queries = [], unset($document['_uid']); } if (\array_key_exists('_tenant', $document)) { - $document['$tenant'] = $document['_tenant'] === null ? null : (int)$document['_tenant']; + $document['$tenant'] = $document['_tenant'] === null ? null : $document['_tenant']; unset($document['_tenant']); } if (\array_key_exists('_createdAt', $document)) { diff --git a/src/Database/Database.php b/src/Database/Database.php index 0658065cc..8b51798f9 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -6470,6 +6470,8 @@ public function casting(Document $collection, Document $document): Document $attributes = $collection->getAttribute('attributes', []); + $attributes = \array_merge($attributes, $this->getInternalAttributes()); + foreach ($attributes as $attribute) { $key = $attribute['$id'] ?? ''; $type = $attribute['type'] ?? ''; From aeed740d7fbe27d8bf41c7c9b387f88b66795a36 Mon Sep 17 00:00:00 2001 From: fogelito Date: Wed, 16 Jul 2025 08:42:55 +0300 Subject: [PATCH 2/4] Remove null check --- phpunit.xml | 2 +- src/Database/Adapter/MariaDB.php | 2 +- src/Database/Adapter/Postgres.php | 2 +- src/Database/Adapter/SQL.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/phpunit.xml b/phpunit.xml index 2a0531cfd..f31402cfa 100755 --- a/phpunit.xml +++ b/phpunit.xml @@ -7,7 +7,7 @@ convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" - stopOnFailure="false" + stopOnFailure="0" > diff --git a/src/Database/Adapter/MariaDB.php b/src/Database/Adapter/MariaDB.php index f6bb8e97d..2cd8551f5 100644 --- a/src/Database/Adapter/MariaDB.php +++ b/src/Database/Adapter/MariaDB.php @@ -1644,7 +1644,7 @@ public function find(string $collection, array $queries = [], ?int $limit = 25, unset($results[$index]['_id']); } if (\array_key_exists('_tenant', $document)) { - $results[$index]['$tenant'] = $document['_tenant'] === null ? null : $document['_tenant']; + $results[$index]['$tenant'] = $document['_tenant']; unset($results[$index]['_tenant']); } if (\array_key_exists('_createdAt', $document)) { diff --git a/src/Database/Adapter/Postgres.php b/src/Database/Adapter/Postgres.php index e175b6a1b..2fc4827b5 100644 --- a/src/Database/Adapter/Postgres.php +++ b/src/Database/Adapter/Postgres.php @@ -1529,7 +1529,7 @@ public function find(string $collection, array $queries = [], ?int $limit = 25, unset($results[$index]['_id']); } if (\array_key_exists('_tenant', $document)) { - $results[$index]['$tenant'] = $document['_tenant'] === null ? null : $document['_tenant']; + $results[$index]['$tenant'] = $document['_tenant']; unset($results[$index]['_tenant']); } if (\array_key_exists('_createdAt', $document)) { diff --git a/src/Database/Adapter/SQL.php b/src/Database/Adapter/SQL.php index fcdb5e1d5..7edb6a0c1 100644 --- a/src/Database/Adapter/SQL.php +++ b/src/Database/Adapter/SQL.php @@ -377,7 +377,7 @@ public function getDocument(string $collection, string $id, array $queries = [], unset($document['_uid']); } if (\array_key_exists('_tenant', $document)) { - $document['$tenant'] = $document['_tenant'] === null ? null : $document['_tenant']; + $document['$tenant'] = $document['_tenant']; unset($document['_tenant']); } if (\array_key_exists('_createdAt', $document)) { From ba60271b25dee01900cb121e70b874174a5124c4 Mon Sep 17 00:00:00 2001 From: fogelito Date: Wed, 16 Jul 2025 08:51:58 +0300 Subject: [PATCH 3/4] stopOnFailure --- phpunit.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpunit.xml b/phpunit.xml index f31402cfa..2a0531cfd 100755 --- a/phpunit.xml +++ b/phpunit.xml @@ -7,7 +7,7 @@ convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" - stopOnFailure="0" + stopOnFailure="false" > From 80b8edd18eef3a991fa11c16f2f6fc3ef72c297e Mon Sep 17 00:00:00 2001 From: fogelito Date: Wed, 16 Jul 2025 10:00:12 +0300 Subject: [PATCH 4/4] Create document casting --- src/Database/Database.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Database/Database.php b/src/Database/Database.php index 8b51798f9..dfbc78146 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -3664,6 +3664,7 @@ public function createDocument(string $collection, Document $document): Document $document = $this->silent(fn () => $this->populateDocumentRelationships($collection, $document)); } + $document = $this->casting($collection, $document); $document = $this->decode($collection, $document); $this->trigger(self::EVENT_DOCUMENT_CREATE, $document); @@ -3756,6 +3757,7 @@ public function createDocuments( $document = $this->silent(fn () => $this->populateDocumentRelationships($collection, $document)); } + $document = $this->casting($collection, $document); $document = $this->decode($collection, $document); $onNext && $onNext($document); $modified++;