Skip to content

Commit 5905632

Browse files
updated createdocuments
1 parent f52c1e9 commit 5905632

2 files changed

Lines changed: 39 additions & 20 deletions

File tree

src/Database/Database.php

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3986,6 +3986,10 @@ public function createDocuments(
39863986
return 0;
39873987
}
39883988

3989+
$clonedDocuments = array_map(function (Document $document) {
3990+
return clone $document;
3991+
}, $documents);
3992+
39893993
$batchSize = \min(Database::INSERT_BATCH_SIZE, \max(1, $batchSize));
39903994
$collection = $this->silent(fn () => $this->getCollection($collection));
39913995
if ($collection->getId() !== self::METADATA) {
@@ -3997,8 +4001,9 @@ public function createDocuments(
39974001

39984002
$time = DateTime::now();
39994003
$modified = 0;
4004+
$index = 0;
40004005

4001-
foreach ($documents as $document) {
4006+
foreach ($clonedDocuments as &$document) {
40024007
$createdAt = $document->getCreatedAt();
40034008
$updatedAt = $document->getUpdatedAt();
40044009

@@ -4042,7 +4047,7 @@ public function createDocuments(
40424047
$document = $this->adapter->castingBefore($collection, $document);
40434048
}
40444049

4045-
foreach (\array_chunk($documents, $batchSize) as $chunk) {
4050+
foreach (\array_chunk($clonedDocuments, $batchSize) as $chunk) {
40464051
$batch = $this->withTransaction(function () use ($collection, $chunk) {
40474052
return $this->adapter->createDocuments($collection, $chunk);
40484053
});
@@ -4063,8 +4068,16 @@ public function createDocuments(
40634068
} catch (\Throwable $e) {
40644069
$onError ? $onError($e) : throw $e;
40654070
}
4066-
4071+
$clonedDocuments[$index] = $doc;
40674072
$modified++;
4073+
$index++;
4074+
}
4075+
}
4076+
4077+
foreach ($clonedDocuments as $index => $clonedDocument) {
4078+
foreach ($clonedDocument->getArrayCopy() as $attribute => $value) {
4079+
var_dump($value);
4080+
$documents[$index]->setAttribute($attribute, $value);
40684081
}
40694082
}
40704083

tests/e2e/Adapter/Scopes/SchemalessTests.php

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1027,25 +1027,31 @@ public function testSchemalessDates(): void
10271027
$updatedAt3 = '2002-03-05T05:06:08.000+00:00';
10281028
$curDate3 = '2002-03-06T07:08:09.000+00:00';
10291029

1030-
$countCreated = $database->withPreserveDates(function () use ($database, $col, $permissions, $createdAt2, $updatedAt2, $curDate2, $createdAt3, $updatedAt3, $curDate3) {
1031-
return $database->createDocuments($col, [
1032-
new Document([
1033-
'$id' => 'd2',
1034-
'$permissions' => $permissions,
1035-
'$createdAt' => $createdAt2,
1036-
'$updatedAt' => $updatedAt2,
1037-
'curDate' => $curDate2,
1038-
]),
1039-
new Document([
1040-
'$id' => 'd3',
1041-
'$permissions' => $permissions,
1042-
'$createdAt' => $createdAt3,
1043-
'$updatedAt' => $updatedAt3,
1044-
'curDate' => $curDate3,
1045-
]),
1046-
]);
1030+
$docs = [
1031+
new Document([
1032+
'$id' => 'd2',
1033+
'$permissions' => $permissions,
1034+
'$createdAt' => $createdAt2,
1035+
'$updatedAt' => $updatedAt2,
1036+
'curDate' => $curDate2,
1037+
]),
1038+
new Document([
1039+
'$id' => 'd3',
1040+
'$permissions' => $permissions,
1041+
'$createdAt' => $createdAt3,
1042+
'$updatedAt' => $updatedAt3,
1043+
'curDate' => $curDate3,
1044+
]),
1045+
];
1046+
$countCreated = $database->withPreserveDates(function () use ($database, $col, $docs) {
1047+
return $database->createDocuments($col, $docs);
10471048
});
1049+
1050+
$this->assertEquals($createdAt2, $docs[0]->getAttribute('$createdAt'));
1051+
$this->assertEquals($updatedAt2, $docs[0]->getAttribute('$updatedAt'));
10481052
$this->assertEquals(2, $countCreated);
1053+
$this->assertEquals($createdAt3, $docs[1]->getAttribute('$createdAt'));
1054+
$this->assertEquals($updatedAt3, $docs[1]->getAttribute('$updatedAt'));
10491055

10501056
$fetched2 = $database->getDocument($col, 'd2');
10511057
$this->assertEquals($curDate2, $fetched2->getAttribute('curDate'));

0 commit comments

Comments
 (0)