Skip to content

Commit ad06aff

Browse files
miaulalalaclaude
andcommitted
fix(preview): replace TypedQueryBuilder with regular QueryBuilder for stable33 compatibility
TypedQueryBuilder and selectColumns() are not available on stable33; replace all usages with getQueryBuilder() and select() respectively. Update tests to mock IQueryBuilder instead of ITypedQueryBuilder. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 2606887 commit ad06aff

2 files changed

Lines changed: 16 additions & 17 deletions

File tree

lib/private/Preview/Storage/LocalPreviewStorage.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ private function processScanBatch(
254254
$pathHash = md5($relativePath);
255255
if (isset($legacyByPathHash[$pathHash])) {
256256
$legacyRow = $legacyByPathHash[$pathHash];
257-
$qb = $this->connection->getTypedQueryBuilder();
257+
$qb = $this->connection->getQueryBuilder();
258258
$qb->delete('filecache')
259259
->where($qb->expr()->eq('fileid', $qb->createNamedParameter($legacyRow['fileid'])))
260260
->andWhere($qb->expr()->eq('storage', $qb->createNamedParameter($legacyRow['storage'])))
@@ -310,8 +310,8 @@ private function fetchFilecacheByFileIds(array $fileIds): array {
310310
}
311311

312312
$result = [];
313-
$qb = $this->connection->getTypedQueryBuilder();
314-
$qb->selectColumns('fileid', 'storage', 'etag', 'mimetype')
313+
$qb = $this->connection->getQueryBuilder();
314+
$qb->select('fileid', 'storage', 'etag', 'mimetype')
315315
->from('filecache');
316316
foreach (array_chunk($fileIds, 1000) as $chunk) {
317317
$qb->andWhere(
@@ -338,8 +338,8 @@ private function fetchFilecacheByPathHashes(array $pathHashes): array {
338338
}
339339

340340
$result = [];
341-
$qb = $this->connection->getTypedQueryBuilder();
342-
$qb->selectColumns('fileid', 'storage', 'etag', 'mimetype', 'parent', 'path_hash')
341+
$qb = $this->connection->getQueryBuilder();
342+
$qb->select('fileid', 'storage', 'etag', 'mimetype', 'parent', 'path_hash')
343343
->from('filecache');
344344
foreach (array_chunk($pathHashes, 1000) as $chunk) {
345345
$qb->andWhere(
@@ -360,8 +360,8 @@ private function fetchFilecacheByPathHashes(array $pathHashes): array {
360360
* empty.
361361
*/
362362
private function deleteParentsFromFileCache(int $folderId, int $storageId): void {
363-
$qb = $this->connection->getTypedQueryBuilder();
364-
$result = $qb->selectColumns('fileid', 'path', 'storage', 'parent')
363+
$qb = $this->connection->getQueryBuilder();
364+
$result = $qb->select('fileid', 'path', 'storage', 'parent')
365365
->from('filecache')
366366
->where($qb->expr()->eq('parent', $qb->createNamedParameter($folderId)))
367367
->setMaxResults(1)
@@ -376,8 +376,8 @@ private function deleteParentsFromFileCache(int $folderId, int $storageId): void
376376
}
377377

378378
// Get new parent
379-
$qb = $this->connection->getTypedQueryBuilder();
380-
$result = $qb->selectColumns('fileid', 'path', 'parent')
379+
$qb = $this->connection->getQueryBuilder();
380+
$result = $qb->select('fileid', 'path', 'parent')
381381
->from('filecache')
382382
->where($qb->expr()->eq('fileid', $qb->createNamedParameter($folderId)))
383383
->andWhere($qb->expr()->eq('storage', $qb->createNamedParameter($storageId)))
@@ -388,7 +388,7 @@ private function deleteParentsFromFileCache(int $folderId, int $storageId): void
388388
if ($row !== false) {
389389
$parentFolderId = (int)$row['parent'];
390390

391-
$qb = $this->connection->getTypedQueryBuilder();
391+
$qb = $this->connection->getQueryBuilder();
392392
$qb->delete('filecache')
393393
->where($qb->expr()->eq('fileid', $qb->createNamedParameter($folderId)))
394394
->andWhere($qb->expr()->eq('storage', $qb->createNamedParameter($storageId)))

tests/lib/Preview/Storage/LocalPreviewStorageTest.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
use OCP\DB\IResult;
1616
use OCP\DB\QueryBuilder\IExpressionBuilder;
1717
use OCP\DB\QueryBuilder\IQueryBuilder;
18-
use OCP\DB\QueryBuilder\ITypedQueryBuilder;
1918
use OCP\Files\IMimeTypeDetector;
2019
use OCP\Files\IMimeTypeLoader;
2120
use OCP\Files\IRootFolder;
@@ -124,8 +123,8 @@ private function buildQueryBuilderMock(array $rows): IQueryBuilder&MockObject {
124123
return $rows[$callIndex++] ?? false;
125124
});
126125

127-
$qbMock = $this->createMock(ITypedQueryBuilder::class);
128-
$qbMock->method('selectColumns')->willReturnSelf();
126+
$qbMock = $this->createMock(IQueryBuilder::class);
127+
$qbMock->method('select')->willReturnSelf();
129128
$qbMock->method('from')->willReturnSelf();
130129
$qbMock->method('andWhere')->willReturnSelf();
131130
$qbMock->method('runAcrossAllShards')->willReturnSelf();
@@ -163,7 +162,7 @@ public function testScanCommitsFinalBatch(): void {
163162
'etag' => 'abc',
164163
'mimetype' => '6',
165164
];
166-
$this->connection->method('getTypedQueryBuilder')
165+
$this->connection->method('getQueryBuilder')
167166
->willReturn($this->buildQueryBuilderMock([$filecacheRow]));
168167

169168
// Outer batch transaction + one inner savepoint for the insert.
@@ -195,7 +194,7 @@ public function testScanHandlesUniqueConstraintViolation(): void {
195194
'etag' => 'abc',
196195
'mimetype' => '6',
197196
];
198-
$this->connection->method('getTypedQueryBuilder')
197+
$this->connection->method('getQueryBuilder')
199198
->willReturn($this->buildQueryBuilderMock([$filecacheRow]));
200199

201200
$ucvException = new class('duplicate key') extends DBException {
@@ -230,7 +229,7 @@ public function testScanRethrowsUnexpectedInsertException(): void {
230229
'etag' => 'abc',
231230
'mimetype' => '6',
232231
];
233-
$this->connection->method('getTypedQueryBuilder')
232+
$this->connection->method('getQueryBuilder')
234233
->willReturn($this->buildQueryBuilderMock([$filecacheRow]));
235234

236235
$driverException = new class('some driver error') extends DBException {
@@ -270,7 +269,7 @@ public function testScanFetchesAllFilecacheRows(): void {
270269
'mimetype' => '6',
271270
], $fileIds);
272271

273-
$this->connection->method('getTypedQueryBuilder')
272+
$this->connection->method('getQueryBuilder')
274273
->willReturn($this->buildQueryBuilderMock($filecacheRows));
275274

276275
// 1 outer batch transaction + 3 inner savepoints (one per preview insert).

0 commit comments

Comments
 (0)