mirror of
https://github.com/appwrite/appwrite.git
synced 2026-05-26 13:51:13 +00:00
Merge pull request #12293 from appwrite/users-skip-targets
skip subQueryTargets in users route
This commit is contained in:
@@ -732,6 +732,13 @@ Http::get('/v1/users')
|
||||
$cursor->setValue($cursorDocument);
|
||||
}
|
||||
|
||||
$skipFilters = ['subQueryAuthenticators', 'subQuerySessions', 'subQueryTokens', 'subQueryChallenges', 'subQueryMemberships'];
|
||||
|
||||
$selects = Query::getByType($queries, [Query::TYPE_SELECT]);
|
||||
if (empty($selects)) {
|
||||
$skipFilters[] = 'subQueryTargets';
|
||||
}
|
||||
|
||||
$users = [];
|
||||
$total = 0;
|
||||
|
||||
@@ -744,7 +751,32 @@ Http::get('/v1/users')
|
||||
} catch (QueryException $e) {
|
||||
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||
}
|
||||
}, ['subQueryAuthenticators', 'subQuerySessions', 'subQueryTokens', 'subQueryChallenges', 'subQueryMemberships']);
|
||||
}, $skipFilters);
|
||||
|
||||
if (empty($selects) && !empty($users)) {
|
||||
$sequences = [];
|
||||
foreach ($users as $user) {
|
||||
$sequences[] = $user->getSequence();
|
||||
}
|
||||
|
||||
try {
|
||||
$targets = $dbForProject->getAuthorization()->skip(fn () => $dbForProject->find('targets', [
|
||||
Query::equal('userInternalId', $sequences),
|
||||
Query::limit(PHP_INT_MAX),
|
||||
]));
|
||||
} catch (QueryException $e) {
|
||||
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||
}
|
||||
|
||||
$targetsByUser = [];
|
||||
foreach ($targets as $target) {
|
||||
$targetsByUser[$target->getAttribute('userInternalId')][] = $target;
|
||||
}
|
||||
|
||||
foreach ($users as $user) {
|
||||
$user->setAttribute('targets', $targetsByUser[$user->getSequence()] ?? []);
|
||||
}
|
||||
}
|
||||
|
||||
$response->dynamic(new Document([
|
||||
'users' => $users,
|
||||
|
||||
Reference in New Issue
Block a user