Skip to content

Commit 97b14e1

Browse files
committed
refactor(QueryBuilder): Properly type the query builder
And make sure the related unit tests are also typed and checked by psalm. Signed-off-by: Carl Schwan <[email protected]>
1 parent 2437046 commit 97b14e1

38 files changed

+1153
-2172
lines changed

apps/dav/lib/CardDAV/CardDavBackend.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1020,7 +1020,7 @@ protected function addChange(int $addressBookId, string $objectUri, int $operati
10201020
'synctoken' => $query->createNamedParameter($syncToken),
10211021
'addressbookid' => $query->createNamedParameter($addressBookId),
10221022
'operation' => $query->createNamedParameter($operation),
1023-
'created_at' => time(),
1023+
'created_at' => $query->createNamedParameter(time()),
10241024
])
10251025
->executeStatement();
10261026

apps/dav/tests/unit/BackgroundJob/CleanupInvitationTokenJobTest.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use OCA\DAV\BackgroundJob\CleanupInvitationTokenJob;
1212
use OCP\AppFramework\Utility\ITimeFactory;
1313
use OCP\DB\QueryBuilder\IExpressionBuilder;
14+
use OCP\DB\QueryBuilder\IParameter;
1415
use OCP\DB\QueryBuilder\IQueryBuilder;
1516
use OCP\IDBConnection;
1617
use PHPUnit\Framework\MockObject\MockObject;
@@ -46,9 +47,12 @@ public function testRun(): void {
4647
->willReturn($queryBuilder);
4748
$queryBuilder->method('expr')
4849
->willReturn($expr);
50+
$parameter = $this->createMock(IParameter::class);
51+
$parameter->method('__toString')
52+
->willReturn('namedParameter1337');
4953
$queryBuilder->method('createNamedParameter')
5054
->willReturnMap([
51-
[1337, \PDO::PARAM_STR, null, 'namedParameter1337']
55+
[1337, \PDO::PARAM_STR, null, $parameter],
5256
]);
5357

5458
$function = 'function1337';

apps/dav/tests/unit/Controller/InvitationResponseControllerTest.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use OCP\AppFramework\Utility\ITimeFactory;
1616
use OCP\DB\IResult;
1717
use OCP\DB\QueryBuilder\IExpressionBuilder;
18+
use OCP\DB\QueryBuilder\IParameter;
1819
use OCP\DB\QueryBuilder\IQueryBuilder;
1920
use OCP\IDBConnection;
2021
use OCP\IRequest;
@@ -415,9 +416,12 @@ private function buildQueryExpects(string $token, ?array $return, int $time): vo
415416
->willReturn($queryBuilder);
416417
$queryBuilder->method('expr')
417418
->willReturn($expr);
419+
$parameter = $this->createMock(IParameter::class);
420+
$parameter->method('__toString')
421+
->willReturn('namedParameterToken');
418422
$queryBuilder->method('createNamedParameter')
419423
->willReturnMap([
420-
[$token, \PDO::PARAM_STR, null, 'namedParameterToken']
424+
[$token, \PDO::PARAM_STR, null, $parameter]
421425
]);
422426

423427
$stmt->expects($this->once())

build/psalm-baseline.xml

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -3503,42 +3503,6 @@
35033503
<code><![CDATA[0]]></code>
35043504
</TypeDoesNotContainType>
35053505
</file>
3506-
<file src="lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php">
3507-
<ImplicitToStringCast>
3508-
<code><![CDATA[$this->functionBuilder->lower($x)]]></code>
3509-
</ImplicitToStringCast>
3510-
<InvalidArgument>
3511-
<code><![CDATA[$y]]></code>
3512-
<code><![CDATA[$y]]></code>
3513-
</InvalidArgument>
3514-
</file>
3515-
<file src="lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php">
3516-
<InternalMethod>
3517-
<code><![CDATA[getParams]]></code>
3518-
</InternalMethod>
3519-
<InvalidArrayOffset>
3520-
<code><![CDATA[$params['collation']]]></code>
3521-
</InvalidArrayOffset>
3522-
</file>
3523-
<file src="lib/private/DB/QueryBuilder/QueryBuilder.php">
3524-
<InvalidNullableReturnType>
3525-
<code><![CDATA[string]]></code>
3526-
</InvalidNullableReturnType>
3527-
<NullableReturnStatement>
3528-
<code><![CDATA[$alias]]></code>
3529-
</NullableReturnStatement>
3530-
<ParamNameMismatch>
3531-
<code><![CDATA[$selects]]></code>
3532-
</ParamNameMismatch>
3533-
</file>
3534-
<file src="lib/private/DB/QueryBuilder/QuoteHelper.php">
3535-
<InvalidNullableReturnType>
3536-
<code><![CDATA[string]]></code>
3537-
</InvalidNullableReturnType>
3538-
<NullableReturnStatement>
3539-
<code><![CDATA[$string]]></code>
3540-
</NullableReturnStatement>
3541-
</file>
35423506
<file src="lib/private/DateTimeFormatter.php">
35433507
<FalsableReturnStatement>
35443508
<code><![CDATA[$l->l($type, $timestamp, [
@@ -4256,13 +4220,4 @@
42564220
<code><![CDATA[getAppValue]]></code>
42574221
</DeprecatedMethod>
42584222
</file>
4259-
<file src="tests/lib/TestCase.php">
4260-
<DeprecatedMethod>
4261-
<code><![CDATA[$container]]></code>
4262-
</DeprecatedMethod>
4263-
<InternalMethod>
4264-
<code><![CDATA[lockFile]]></code>
4265-
<code><![CDATA[unlockFile]]></code>
4266-
</InternalMethod>
4267-
</file>
42684223
</files>

lib/private/DB/QueryBuilder/CompositeExpression.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ class CompositeExpression implements ICompositeExpression, \Countable {
1414
public const TYPE_AND = 'AND';
1515
public const TYPE_OR = 'OR';
1616

17+
/**
18+
* @param self::TYPE_* $type
19+
* @param array<ICompositeExpression|string> $parts
20+
*/
1721
public function __construct(
1822
private string $type,
1923
private array $parts = [],

0 commit comments

Comments
 (0)