Skip to content

Commit d5d8e67

Browse files
committed
perf: Replace getById call by getFirstNodeById
We only use the first node anyway and getFirstNodeById is faster Signed-off-by: Carl Schwan <carlschwan@kde.org>
1 parent a0f9d5d commit d5d8e67

File tree

8 files changed

+21
-24
lines changed

8 files changed

+21
-24
lines changed

lib/Db/PageGarbageCollector.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public function purgeObsoletePages(): int {
2323
$purgeCount = 0;
2424
$rootFolder = $this->folderManager->getRootFolder();
2525
foreach ($this->pageMapper->getAll() as $page) {
26-
if ($rootFolder->getById($page->getFileId()) === []) {
26+
if ($rootFolder->getFirstNodeById($page->getFileId()) === null) {
2727
$purgeCount++;
2828
$this->pageLinkMapper->deleteByPageId($page->getFileId());
2929
$this->pageMapper->delete($page);

lib/Fs/NodeHelper.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@ public function __construct(
3838
* @throws NotFoundException
3939
*/
4040
public function getFileById(Folder $folder, int $id): File {
41-
$file = $folder->getById($id);
41+
$file = $folder->getFirstNodeById($id);
4242

43-
if (count($file) <= 0 || !($file[0] instanceof File)) {
43+
if (!($file instanceof File)) {
4444
throw new NotFoundException('File not found: ' . $id);
4545
}
46-
return $file[0];
46+
return $file;
4747
}
4848

4949
public static function generateFilename(Folder $folder, string $filename, string $suffix = ''): string {

lib/Migration/GenerateSlugs.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ private function generatePageSlugs(IOutput $output): void {
111111
$rootFolder = $this->collectiveFolderManager->getRootFolder();
112112

113113
while ($row = $result->fetch()) {
114-
$pageFile = $rootFolder->getById($row['file_id'])[0];
114+
$pageFile = $rootFolder->getFirstNodeById($row['file_id']);
115115
if (!($pageFile instanceof File) || NodeHelper::isLandingPage($pageFile)) {
116116
continue;
117117
}

lib/Search/PageContentProvider.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,9 @@ public function search(IUser $user, ISearchQuery $query): SearchResult {
8484
continue;
8585
}
8686
foreach ($results as $fileId => $fileData) {
87-
$fileEntries = $collectiveRoot->getById($fileId);
88-
if (!empty($fileEntries)) {
89-
$pages[$fileId] = $fileEntries[0];
87+
$fileEntry = $collectiveRoot->getFirstNodeById($fileId);
88+
if ($fileEntry !== null) {
89+
$pages[$fileId] = $fileEntry;
9090
$collectiveMap[$fileId] = $collective;
9191
}
9292
}

lib/Service/CollectiveShareService.php

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,21 +57,20 @@ public function createFolderShare(string $userId, string $collectiveName, int $n
5757

5858
$userFolder = $this->userFolderHelper->get($userId);
5959
try {
60-
$path = $userFolder->get($collectiveName);
61-
if (!($path instanceof Folder)) {
60+
$node = $userFolder->get($collectiveName);
61+
if (!($node instanceof Folder)) {
6262
throw new FilesNotFoundException();
6363
}
6464
if ($nodeId !== 0) {
65-
$nodes = $path->getById($nodeId);
66-
if (count($nodes) <= 0) {
65+
$node = $node->getFirstNodeById($nodeId);
66+
if ($node === null) {
6767
throw new FilesNotFoundException();
6868
}
69-
$path = $nodes[0];
7069
}
7170
} catch (FilesNotFoundException $e) {
7271
throw new NotFoundException('Wrong path, collective folder doesn\'t exist', 0, $e);
7372
}
74-
$share->setNode($path);
73+
$share->setNode($node);
7574

7675
try {
7776
$share->getNode()->lock(ILockingProvider::LOCK_SHARED);

lib/Service/PageService.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ public function __construct(
4848
private readonly CollectiveServiceBase $collectiveService,
4949
private readonly UserFolderHelper $userFolderHelper,
5050
private readonly IUserManager $userManager,
51-
private readonly IConfig $config,
5251
ContainerInterface $container,
5352
private readonly SessionService $sessionService,
5453
private readonly SluggerInterface $slugger,
@@ -144,7 +143,7 @@ public function getFolder(int $collectiveId, int $fileId, string $userId): Folde
144143
*/
145144
public function isPageInPageFolder(int $collectiveId, int $parentId, int $pageId, string $userId): void {
146145
$folder = $this->getFolder($collectiveId, $parentId, $userId);
147-
if (!isset($folder->getById($pageId)[0])) {
146+
if ($folder->getFirstNodeById($pageId) === null) {
148147
throw new NotFoundException('Page ' . $pageId . ' is not a child of ' . $parentId);
149148
}
150149
}
@@ -636,9 +635,8 @@ public function findByFileId(int $collectiveId, int $fileId, string $userId, ?in
636635
$collectiveFolder = $parentId
637636
? $this->getFolder($collectiveId, $parentId, $userId)
638637
: $this->getCollectiveFolder($collectiveId, $userId);
639-
$pageFile = $collectiveFolder->getById($fileId);
640-
if (isset($pageFile[0]) && $pageFile[0] instanceof File) {
641-
$pageFile = $pageFile[0];
638+
$pageFile = $collectiveFolder->getFirstNodeById($fileId);
639+
if ($pageFile instanceof File) {
642640
return $this->findByFile($collectiveId, $pageFile, $userId);
643641
}
644642
throw new NotFoundException('Failed to get page by file ID ' . $fileId . ' in collective ' . $collectiveId);

tests/Unit/Fs/NodeHelperTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,10 @@ public function testGetFileById(): void {
7373
$folder = $this->getMockBuilder(Folder::class)
7474
->disableOriginalConstructor()
7575
->getMock();
76-
$folder->method('getById')
76+
$folder->method('getFirstNodeById')
7777
->willReturnMap([
78-
[1, [$file]],
79-
[2, []],
78+
[1, $file],
79+
[2, null],
8080
]);
8181

8282
self::assertEquals($file, $this->helper->getFileById($folder, 1));

tests/Unit/Search/PageContentProviderTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ protected function setUp(): void {
4646
$collectiveService = $this->createMock(CollectiveService::class);
4747
/** @var Folder&MockObject $folder */
4848
$folder = $this->createMock(Folder::class);
49-
$folder->method('getById')
50-
->willReturn([]);
49+
$folder->method('getFirstNodeById')
50+
->willReturn(null);
5151
/** @var PageService&MockObject $pageService */
5252
$pageService = $this->createMock(PageService::class);
5353
$pageService->method('getCollectiveFolder')

0 commit comments

Comments
 (0)