diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index d65a7c6a5..d3a7075bb 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -533,8 +533,8 @@ App::post('/v1/teams/:teamId/memberships') } catch (Duplicate $th) { throw new Exception(Exception::TEAM_INVITE_ALREADY_EXISTS); } - $team->setAttribute('total', $team->getAttribute('total', 0) + 1); - $team = Authorization::skip(fn() => $dbForProject->updateDocument('teams', $team->getId(), $team)); + + Authorization::skip(fn() => $dbForProject->increaseDocumentAttribute('teams', $team->getId(), 'total', 1)); $dbForProject->deleteCachedDocument('users', $invitee->getId()); } else { diff --git a/src/Appwrite/Platform/Workers/Deletes.php b/src/Appwrite/Platform/Workers/Deletes.php index 6375e92ca..b5b2d8202 100644 --- a/src/Appwrite/Platform/Workers/Deletes.php +++ b/src/Appwrite/Platform/Workers/Deletes.php @@ -516,13 +516,8 @@ class Deletes extends Action if ($document->getAttribute('confirm')) { // Count only confirmed members $teamId = $document->getAttribute('teamId'); $team = $dbForProject->getDocument('teams', $teamId); - if (!$team->isEmpty()) { - $team = $dbForProject->updateDocument( - 'teams', - $teamId, - // Ensure that total >= 0 - $team->setAttribute('total', \max($team->getAttribute('total', 0) - 1, 0)) - ); + if (!$team->isEmpty() && $team->getAttribute('total', 0) > 0) { + $dbForProject->decreaseDocumentAttribute('teams', $teamId, 'total', 1); } } });