From 7a21995bec1d59b5ce88fce1fd2e36bf82e50b7e Mon Sep 17 00:00:00 2001 From: Cristian Scheid Date: Thu, 19 Mar 2026 14:37:11 -0300 Subject: [PATCH] refactor(recent-search): use order by fields to determine extended cache join and cast config limit to number Signed-off-by: Cristian Scheid --- apps/files/src/services/Recent.ts | 2 +- lib/private/Files/Cache/QuerySearchHelper.php | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/files/src/services/Recent.ts b/apps/files/src/services/Recent.ts index 403f4749a43..dd87070d248 100644 --- a/apps/files/src/services/Recent.ts +++ b/apps/files/src/services/Recent.ts @@ -41,7 +41,7 @@ export async function getContents(path = '/', options: { signal: AbortSignal }): const contentsResponse = await client.search('/', { signal: options.signal, details: true, - data: getRecentSearch(lastTwoWeeksTimestamp, store.userConfig.recent_files_limit + 1), + data: getRecentSearch(lastTwoWeeksTimestamp, Number(store.userConfig.recent_files_limit)), }) as ResponseDataDetailed const contents = contentsResponse.data.results diff --git a/lib/private/Files/Cache/QuerySearchHelper.php b/lib/private/Files/Cache/QuerySearchHelper.php index 4de57e7d75a..8e344293ba5 100644 --- a/lib/private/Files/Cache/QuerySearchHelper.php +++ b/lib/private/Files/Cache/QuerySearchHelper.php @@ -152,7 +152,13 @@ class QuerySearchHelper { $requestedFields = $this->searchBuilder->extractRequestedFields($searchQuery->getSearchOperation()); - $query = $builder->selectFileCache('file', true); + $orderFields = array_map(fn ($order) => $order->getField(), $searchQuery->getOrder()); + + $joinExtendedCache = in_array('creation_time', $requestedFields) + || in_array('upload_time', $requestedFields) + || in_array('last_activity', $orderFields); + + $query = $builder->selectFileCache('file', $joinExtendedCache); if (in_array('systemtag', $requestedFields)) { $this->equipQueryForSystemTags($query, $this->requireUser($searchQuery));