Skip to content

Commit 7263a62

Browse files
committed
Encode documents before type checks
This commit also changes the behaviour to use encode() instead of encodeIfSupported(), requiring documents to be encodable by the given codec in order to be inserted/updated.
1 parent dacdf18 commit 7263a62

12 files changed

+326
-275
lines changed

psalm-baseline.xml

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,8 @@
193193
<code>$args[0]</code>
194194
<code>$args[0]</code>
195195
<code>$args[0]</code>
196+
<code>$args[0]</code>
197+
<code>$args[1]</code>
196198
<code>$args[1]</code>
197199
<code>$args[1]</code>
198200
<code>$args[1]</code>
@@ -236,8 +238,6 @@
236238
<code><![CDATA[$args[2]['upsert']]]></code>
237239
</MixedArrayAccess>
238240
<MixedArrayAssignment>
239-
<code>$args[0]</code>
240-
<code>$args[1]</code>
241241
<code>$args[1]</code>
242242
<code>$args[1]</code>
243243
<code>$args[1]</code>
@@ -250,15 +250,15 @@
250250
<code>$args[2]</code>
251251
<code><![CDATA[$args[2]['multi']]]></code>
252252
<code><![CDATA[$args[2]['multi']]]></code>
253+
<code>$operations[$i][$type][0]</code>
254+
<code>$operations[$i][$type][1]</code>
253255
<code>$operations[$i][$type][1]</code>
254256
<code>$operations[$i][$type][2]</code>
255257
<code>$operations[$i][$type][2]</code>
256258
</MixedArrayAssignment>
257259
<MixedAssignment>
258260
<code>$args</code>
259261
<code>$args</code>
260-
<code>$args[0]</code>
261-
<code>$args[1]</code>
262262
<code>$args[2]</code>
263263
<code>$args[2]</code>
264264
<code>$insertedIds[$i]</code>
@@ -270,8 +270,6 @@
270270
<code><![CDATA[$options['writeConcern']]]></code>
271271
</MixedAssignment>
272272
<MixedMethodCall>
273-
<code>encodeIfSupported</code>
274-
<code>encodeIfSupported</code>
275273
<code>isInTransaction</code>
276274
</MixedMethodCall>
277275
<MixedOperand>
@@ -472,10 +470,9 @@
472470
<MixedAssignment>
473471
<code><![CDATA[$options['fields']]]></code>
474472
</MixedAssignment>
475-
<RedundantConditionGivenDocblockType>
476-
<code>assert(is_array($replacement) || is_object($replacement))</code>
477-
<code>is_array($replacement)</code>
478-
</RedundantConditionGivenDocblockType>
473+
<PossiblyInvalidArgument>
474+
<code>$replacement</code>
475+
</PossiblyInvalidArgument>
479476
</file>
480477
<file src="src/Operation/FindOneAndUpdate.php">
481478
<MixedAssignment>
@@ -484,16 +481,17 @@
484481
</file>
485482
<file src="src/Operation/InsertMany.php">
486483
<MixedAssignment>
487-
<code>$document</code>
488484
<code>$insertedIds[$i]</code>
489485
<code>$options[$option]</code>
490486
<code><![CDATA[$options['session']]]></code>
491487
<code><![CDATA[$options['writeConcern']]]></code>
492488
</MixedAssignment>
493489
<MixedMethodCall>
494-
<code>encodeIfSupported</code>
495490
<code>isInTransaction</code>
496491
</MixedMethodCall>
492+
<PossiblyInvalidArgument>
493+
<code>$document</code>
494+
</PossiblyInvalidArgument>
497495
</file>
498496
<file src="src/Operation/InsertOne.php">
499497
<MixedAssignment>
@@ -505,10 +503,9 @@
505503
<MixedMethodCall>
506504
<code>isInTransaction</code>
507505
</MixedMethodCall>
508-
<RedundantConditionGivenDocblockType>
509-
<code>assert(is_array($document) || is_object($document))</code>
510-
<code>is_array($document)</code>
511-
</RedundantConditionGivenDocblockType>
506+
<PossiblyInvalidArgument>
507+
<code>$document</code>
508+
</PossiblyInvalidArgument>
512509
</file>
513510
<file src="src/Operation/ListIndexes.php">
514511
<MixedAssignment>
@@ -557,10 +554,9 @@
557554
</MixedMethodCall>
558555
</file>
559556
<file src="src/Operation/ReplaceOne.php">
560-
<RedundantConditionGivenDocblockType>
561-
<code>assert(is_array($replacement) || is_object($replacement))</code>
562-
<code>is_array($replacement)</code>
563-
</RedundantConditionGivenDocblockType>
557+
<PossiblyInvalidArgument>
558+
<code>$replacement</code>
559+
</PossiblyInvalidArgument>
564560
</file>
565561
<file src="src/Operation/Update.php">
566562
<MixedArgument>

src/Collection.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -781,8 +781,8 @@ public function getWriteConcern()
781781
*
782782
* @see InsertMany::__construct() for supported options
783783
* @see https://mongodb.com/docs/manual/reference/command/insert/
784-
* @param array[]|object[] $documents The documents to insert
785-
* @param array $options Command options
784+
* @param list<object|array> $documents The documents to insert
785+
* @param array $options Command options
786786
* @return InsertManyResult
787787
* @throws InvalidArgumentException for parameter/option parsing errors
788788
* @throws DriverRuntimeException for other driver errors (e.g. connection errors)

0 commit comments

Comments
 (0)