From ee5bb6d73dc35eec153187b224dde42bf68e68ec Mon Sep 17 00:00:00 2001 From: bhardwajparth51 <196071556+bhardwajparth51@users.noreply.github.com> Date: Thu, 2 Apr 2026 20:47:23 +0530 Subject: [PATCH] fix: ensure realtime event payload is populated for atomic operations --- .../Collections/Documents/Attribute/Decrement.php | 7 +++++-- .../Collections/Documents/Attribute/Increment.php | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Decrement.php b/src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Decrement.php index a02eb51aba..fe225eaf7f 100644 --- a/src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Decrement.php +++ b/src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Decrement.php @@ -84,6 +84,7 @@ class Decrement extends Action ->inject('dbForProject') ->inject('getDatabasesDB') ->inject('queueForEvents') + ->inject('queueForRealtime') ->inject('usage') ->inject('plan') ->inject('authorization') @@ -91,7 +92,7 @@ class Decrement extends Action ->callback($this->action(...)); } - public function action(string $databaseId, string $collectionId, string $documentId, string $attribute, int|float $value, int|float|null $min, ?string $transactionId, UtopiaResponse $response, Database $dbForProject, callable $getDatabasesDB, Event $queueForEvents, Context $usage, array $plan, Authorization $authorization, User $user): void + public function action(string $databaseId, string $collectionId, string $documentId, string $attribute, int|float $value, int|float|null $min, ?string $transactionId, UtopiaResponse $response, Database $dbForProject, callable $getDatabasesDB, Event $queueForEvents, Event $queueForRealtime, Context $usage, array $plan, Authorization $authorization, User $user): void { $isAPIKey = $user->isApp($authorization->getRoles()); $isPrivilegedUser = $user->isPrivileged($authorization->getRoles()); @@ -207,6 +208,8 @@ class Decrement extends Action ->addMetric($this->getDatabasesOperationWriteMetric(), 1) ->addMetric(str_replace('{databaseInternalId}', $database->getSequence(), $this->getDatabasesIdOperationWriteMetric()), 1); + $response->dynamic($document, $this->getResponseModel()); + $queueForEvents ->setParam('databaseId', $databaseId) ->setParam('collectionId', $collectionId) @@ -217,6 +220,6 @@ class Decrement extends Action ->setContext($this->getCollectionsEventsContext(), $collection) ->setPayload($response->getPayload(), sensitive: $relationships); - $response->dynamic($document, $this->getResponseModel()); + $queueForRealtime->from($queueForEvents)->trigger(); } } diff --git a/src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Increment.php b/src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Increment.php index 305d9b7a8d..9a0eadc814 100644 --- a/src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Increment.php +++ b/src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Increment.php @@ -84,6 +84,7 @@ class Increment extends Action ->inject('dbForProject') ->inject('getDatabasesDB') ->inject('queueForEvents') + ->inject('queueForRealtime') ->inject('usage') ->inject('plan') ->inject('authorization') @@ -91,7 +92,7 @@ class Increment extends Action ->callback($this->action(...)); } - public function action(string $databaseId, string $collectionId, string $documentId, string $attribute, int|float $value, int|float|null $max, ?string $transactionId, UtopiaResponse $response, Database $dbForProject, callable $getDatabasesDB, Event $queueForEvents, Context $usage, array $plan, Authorization $authorization, User $user): void + public function action(string $databaseId, string $collectionId, string $documentId, string $attribute, int|float $value, int|float|null $max, ?string $transactionId, UtopiaResponse $response, Database $dbForProject, callable $getDatabasesDB, Event $queueForEvents, Event $queueForRealtime, Context $usage, array $plan, Authorization $authorization, User $user): void { $isAPIKey = $user->isApp($authorization->getRoles()); $isPrivilegedUser = $user->isPrivileged($authorization->getRoles()); @@ -207,6 +208,8 @@ class Increment extends Action ->addMetric($this->getDatabasesOperationWriteMetric(), 1) ->addMetric(str_replace('{databaseInternalId}', $database->getSequence(), $this->getDatabasesIdOperationWriteMetric()), 1); + $response->dynamic($document, $this->getResponseModel()); + $queueForEvents ->setParam('databaseId', $databaseId) ->setParam('collectionId', $collectionId) @@ -217,6 +220,6 @@ class Increment extends Action ->setContext($this->getCollectionsEventsContext(), $collection) ->setPayload($response->getPayload(), sensitive: $relationships); - $response->dynamic($document, $this->getResponseModel()); + $queueForRealtime->from($queueForEvents)->trigger(); } }