Skip to content

Commit 5f1dad5

Browse files
authored
Merge pull request #8143 from nextcloud/carl/groups-optimizations
perf: Avoid fetching full group information
2 parents f8c30bc + a899455 commit 5f1dad5

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

lib/Db/CardMapper.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use OCP\ICache;
1818
use OCP\ICacheFactory;
1919
use OCP\IDBConnection;
20+
use OCP\IGroup;
2021
use OCP\IGroupManager;
2122
use OCP\IUser;
2223
use OCP\IUserManager;
@@ -552,8 +553,9 @@ private function extendQueryByFilter(IQueryBuilder $qb, SearchQuery $query) {
552553
return (mb_strtolower($user->getDisplayName()) === mb_strtolower($assignedQueryValue) || $user->getUID() === $assignedQueryValue);
553554
});
554555
$groups = $this->groupManager->search($assignment->getValue());
556+
$groups = array_map(fn (IGroup $g): string => $g->getGID(), $groups);
555557
foreach ($searchUsers as $user) {
556-
$groups = array_merge($groups, $this->groupManager->getUserGroups($user));
558+
$groups = array_merge($groups, $this->groupManager->getUserGroupIds($user));
557559
}
558560

559561
$assignmentSearches = [];
@@ -565,10 +567,10 @@ private function extendQueryByFilter(IQueryBuilder $qb, SearchQuery $query) {
565567
$qb->expr()->eq('au' . $index . '.type', $qb->createNamedParameter(Assignment::TYPE_USER, IQueryBuilder::PARAM_INT))
566568
);
567569
}
568-
foreach ($groups as $group) {
570+
foreach ($groups as $groupId) {
569571
$hasAssignedMatches = true;
570572
$assignmentSearches[] = $qb->expr()->andX(
571-
$qb->expr()->eq('au' . $index . '.participant', $qb->createNamedParameter($group->getGID(), IQueryBuilder::PARAM_STR)),
573+
$qb->expr()->eq('au' . $index . '.participant', $qb->createNamedParameter($groupId, IQueryBuilder::PARAM_STR)),
572574
$qb->expr()->eq('au' . $index . '.type', $qb->createNamedParameter(Assignment::TYPE_GROUP, IQueryBuilder::PARAM_INT))
573575
);
574576
}

0 commit comments

Comments
 (0)