From 279a8ba5078408af7ae06474db223a8b46c95fe4 Mon Sep 17 00:00:00 2001 From: fogelito Date: Fri, 16 May 2025 19:55:02 +0300 Subject: [PATCH 1/5] createdAt --- src/Database/Database.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Database/Database.php b/src/Database/Database.php index 45bb02720..5778895c1 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -4975,9 +4975,12 @@ public function createOrUpdateDocumentsWithIncrease( $document ->setAttribute('$id', empty($document->getId()) ? ID::unique() : $document->getId()) ->setAttribute('$collection', $collection->getId()) - ->setAttribute('$createdAt', empty($createdAt) || !$this->preserveDates ? $time : $createdAt) ->setAttribute('$updatedAt', empty($updatedAt) || !$this->preserveDates ? $time : $updatedAt); + if ($old->isEmpty()) { + $document->setAttribute('$createdAt', empty($createdAt) || !$this->preserveDates ? $time : $createdAt); + } + if (!$updatesPermissions) { $document->setAttribute('$permissions', $old->getPermissions()); } From ed2ccc15259bfa0feea786ff9e8b5fbbcc15708b Mon Sep 17 00:00:00 2001 From: fogelito Date: Fri, 16 May 2025 20:10:16 +0300 Subject: [PATCH 2/5] Only on new document --- src/Database/Database.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Database/Database.php b/src/Database/Database.php index 5778895c1..5173bcb15 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -4969,7 +4969,6 @@ public function createOrUpdateDocumentsWithIncrease( throw new AuthorizationException($validator->getDescription()); } - $createdAt = $document->getCreatedAt(); $updatedAt = $document->getUpdatedAt(); $document @@ -4978,6 +4977,7 @@ public function createOrUpdateDocumentsWithIncrease( ->setAttribute('$updatedAt', empty($updatedAt) || !$this->preserveDates ? $time : $updatedAt); if ($old->isEmpty()) { + $createdAt = $document->getCreatedAt(); $document->setAttribute('$createdAt', empty($createdAt) || !$this->preserveDates ? $time : $createdAt); } From fbd25771c5d9e76eeae3ffea559646e76d6db5b5 Mon Sep 17 00:00:00 2001 From: fogelito Date: Fri, 16 May 2025 21:20:59 +0300 Subject: [PATCH 3/5] Tests fix --- src/Database/Database.php | 2 ++ tests/e2e/Adapter/Scopes/DocumentTests.php | 9 ++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Database/Database.php b/src/Database/Database.php index 5173bcb15..0c7dfbb41 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -4979,6 +4979,8 @@ public function createOrUpdateDocumentsWithIncrease( if ($old->isEmpty()) { $createdAt = $document->getCreatedAt(); $document->setAttribute('$createdAt', empty($createdAt) || !$this->preserveDates ? $time : $createdAt); + } else { + $document['$createdAt'] = $old->getCreatedAt(); } if (!$updatesPermissions) { diff --git a/tests/e2e/Adapter/Scopes/DocumentTests.php b/tests/e2e/Adapter/Scopes/DocumentTests.php index cd4db3959..45d83bcf4 100644 --- a/tests/e2e/Adapter/Scopes/DocumentTests.php +++ b/tests/e2e/Adapter/Scopes/DocumentTests.php @@ -368,7 +368,9 @@ public function testCreateOrUpdateDocuments(): void $this->assertEquals(2, $count); - foreach ($results as $document) { + $createdAt = []; + foreach ($results as $index => $document) { + $createdAt[$index] = $document->getCreatedAt(); $this->assertNotEmpty(true, $document->getId()); $this->assertIsString($document->getAttribute('string')); $this->assertEquals('text📝', $document->getAttribute('string')); // Also makes sure an emoji is working @@ -398,10 +400,10 @@ public function testCreateOrUpdateDocuments(): void $documents[1]->setAttribute('integer', 10); $results = []; + $count = static::getDatabase()->createOrUpdateDocuments(__FUNCTION__, $documents, onNext: function ($doc) use (&$results) { $results[] = $doc; }); - $this->assertEquals(2, $count); foreach ($results as $document) { @@ -418,7 +420,8 @@ public function testCreateOrUpdateDocuments(): void $this->assertEquals(2, count($documents)); - foreach ($documents as $document) { + foreach ($documents as $index => $document) { + $this->assertEquals($createdAt[$index], $document->getCreatedAt()); $this->assertNotEmpty(true, $document->getId()); $this->assertIsString($document->getAttribute('string')); $this->assertEquals('new text📝', $document->getAttribute('string')); // Also makes sure an emoji is working From f23d1e40a4e3e9f534ebf6a91243d9235bfd46d4 Mon Sep 17 00:00:00 2001 From: fogelito Date: Fri, 16 May 2025 21:22:24 +0300 Subject: [PATCH 4/5] Extra line --- tests/e2e/Adapter/Scopes/DocumentTests.php | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/e2e/Adapter/Scopes/DocumentTests.php b/tests/e2e/Adapter/Scopes/DocumentTests.php index 45d83bcf4..ac204d674 100644 --- a/tests/e2e/Adapter/Scopes/DocumentTests.php +++ b/tests/e2e/Adapter/Scopes/DocumentTests.php @@ -400,7 +400,6 @@ public function testCreateOrUpdateDocuments(): void $documents[1]->setAttribute('integer', 10); $results = []; - $count = static::getDatabase()->createOrUpdateDocuments(__FUNCTION__, $documents, onNext: function ($doc) use (&$results) { $results[] = $doc; }); From 87dde69f9c0a4eacc41799514c8f8d8bd5bc075e Mon Sep 17 00:00:00 2001 From: fogelito Date: Fri, 16 May 2025 21:35:29 +0300 Subject: [PATCH 5/5] line --- tests/e2e/Adapter/Scopes/DocumentTests.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/e2e/Adapter/Scopes/DocumentTests.php b/tests/e2e/Adapter/Scopes/DocumentTests.php index ac204d674..35ab3d191 100644 --- a/tests/e2e/Adapter/Scopes/DocumentTests.php +++ b/tests/e2e/Adapter/Scopes/DocumentTests.php @@ -403,6 +403,7 @@ public function testCreateOrUpdateDocuments(): void $count = static::getDatabase()->createOrUpdateDocuments(__FUNCTION__, $documents, onNext: function ($doc) use (&$results) { $results[] = $doc; }); + $this->assertEquals(2, $count); foreach ($results as $document) {