From 1b97c9cd430385cefffc617dc5c79f080bfa337d Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Fri, 17 Dec 2021 16:11:22 +0100 Subject: [PATCH] fix: optimize team membership controllers --- app/controllers/api/teams.php | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index 7ad415650a..176aab610f 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -470,20 +470,22 @@ App::get('/v1/teams/:teamId/memberships') $memberships = $dbForInternal->find('memberships', [new Query('teamId', Query::TYPE_EQUAL, [$teamId])], $limit, $offset, [], [$orderType], $cursorMembership ?? null, $cursorDirection); $sum = $dbForInternal->count('memberships', [new Query('teamId', Query::TYPE_EQUAL, [$teamId])], APP_LIMIT_COUNT); - $users = []; - foreach ($memberships as $membership) { - if (empty($membership->getAttribute('userId', null))) { - continue; - } + $memberships = array_filter($memberships, fn(Document $membership) => !empty($membership->getAttribute('userId'))); - $temp = $dbForInternal->getDocument('users', $membership->getAttribute('userId', null))->getArrayCopy(['email', 'name']); + $memberships = array_map(function($membership) use ($dbForInternal) { + $user = $dbForInternal->getDocument('users', $membership->getAttribute('userId')); - $users[] = new Document(\array_merge($temp, $membership->getArrayCopy())); - } + $membership + ->setAttribute('name', $user->getAttribute('name')) + ->setAttribute('email', $user->getAttribute('email')) + ; + + return $membership; + }, $memberships); $response->dynamic(new Document([ - 'memberships' => $users, + 'memberships' => $memberships, 'sum' => $sum, ]), Response::MODEL_MEMBERSHIP_LIST); }); @@ -636,11 +638,7 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId/status') throw new Exception('Team IDs don\'t match', 404); } - Authorization::disable(); - - $team = $dbForInternal->getDocument('teams', $teamId); - - Authorization::reset(); + $team = Authorization::skip(fn() => $dbForInternal->getDocument('teams', $teamId)); if ($team->isEmpty()) { throw new Exception('Team not found', 404); @@ -696,7 +694,7 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId/status') ->setAttribute('$read', ['user:'.$user->getId()]) ->setAttribute('$write', ['user:'.$user->getId()]) ); - + $user->setAttribute('sessions', $session, Document::SET_TYPE_APPEND); Authorization::setRole('user:'.$userId);