diff --git a/src/Database/Database.php b/src/Database/Database.php index 45bb02720..0c7dfbb41 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -4969,15 +4969,20 @@ public function createOrUpdateDocumentsWithIncrease( throw new AuthorizationException($validator->getDescription()); } - $createdAt = $document->getCreatedAt(); $updatedAt = $document->getUpdatedAt(); $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()) { + $createdAt = $document->getCreatedAt(); + $document->setAttribute('$createdAt', empty($createdAt) || !$this->preserveDates ? $time : $createdAt); + } else { + $document['$createdAt'] = $old->getCreatedAt(); + } + if (!$updatesPermissions) { $document->setAttribute('$permissions', $old->getPermissions()); } diff --git a/tests/e2e/Adapter/Scopes/DocumentTests.php b/tests/e2e/Adapter/Scopes/DocumentTests.php index cd4db3959..35ab3d191 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 @@ -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