Merge remote-tracking branch 'upstream/1.8.x' into dat-600

This commit is contained in:
ArnabChatterjee20k
2025-08-05 16:49:45 +05:30
10 changed files with 867 additions and 7 deletions
+2
View File
@@ -383,6 +383,8 @@ class Event
{
$this->params = [];
$this->sensitive = [];
$this->event = '';
$this->payload = [];
return $this;
}
@@ -2,6 +2,7 @@
namespace Appwrite\Platform\Modules\Databases\Http\Databases\Collections\Documents;
use Appwrite\Event\Event;
use Appwrite\Extend\Exception;
use Utopia\Database\Database;
use Utopia\Database\Document;
@@ -279,4 +280,59 @@ abstract class Action extends UtopiaAction
return true;
}
/**
* For triggering different queues for each document for a bulk documents
* @param string $event
* @param Document $database
* @param Document $collection
* @param Document[] $documents
* @param Event $queueForEvents
* @param Event $queueForRealtime
* @param Event $queueForFunctions
* @param Event $queueForWebhooks
* @return void
*/
protected function triggerBulk(
string $event,
Document $database,
Document $collection,
array $documents,
Event $queueForEvents,
Event $queueForRealtime,
Event $queueForFunctions,
Event $queueForWebhooks
): void {
$queueForEvents
->setEvent($event)
->setParam('databaseId', $database->getId())
->setContext('database', $database)
->setParam('collectionId', $collection->getId())
->setParam('tableId', $collection->getId())
->setContext($this->getCollectionsEventsContext(), $collection);
foreach ($documents as $document) {
$queueForEvents
->setParam('documentId', $document->getId())
->setParam('rowId', $document->getId())
->setPayload($document->getArrayCopy());
$queueForRealtime
->from($queueForEvents)
->trigger();
$queueForFunctions
->from($queueForEvents)
->trigger();
$queueForWebhooks
->from($queueForEvents)
->trigger();
}
$queueForEvents->reset();
$queueForRealtime->reset();
$queueForFunctions->reset();
$queueForWebhooks->reset();
}
}
@@ -2,6 +2,7 @@
namespace Appwrite\Platform\Modules\Databases\Http\Databases\Collections\Documents\Bulk;
use Appwrite\Event\Event;
use Appwrite\Event\StatsUsage;
use Appwrite\Extend\Exception;
use Appwrite\Platform\Modules\Databases\Http\Databases\Collections\Documents\Action;
@@ -72,11 +73,15 @@ class Delete extends Action
->inject('response')
->inject('dbForProject')
->inject('queueForStatsUsage')
->inject('queueForEvents')
->inject('queueForRealtime')
->inject('queueForFunctions')
->inject('queueForWebhooks')
->inject('plan')
->callback($this->action(...));
}
public function action(string $databaseId, string $collectionId, array $queries, UtopiaResponse $response, Database $dbForProject, StatsUsage $queueForStatsUsage, array $plan): void
public function action(string $databaseId, string $collectionId, array $queries, UtopiaResponse $response, Database $dbForProject, StatsUsage $queueForStatsUsage, Event $queueForEvents, Event $queueForRealtime, Event $queueForFunctions, Event $queueForWebhooks, array $plan): void
{
$database = $dbForProject->getDocument('databases', $databaseId);
if ($database->isEmpty()) {
@@ -134,5 +139,16 @@ class Delete extends Action
'total' => $modified,
$this->getSdkGroup() => $documents,
]), $this->getResponseModel());
$this->triggerBulk(
'databases.[databaseId].collections.[collectionId].documents.[documentId].delete',
$database,
$collection,
$documents,
$queueForEvents,
$queueForRealtime,
$queueForFunctions,
$queueForWebhooks
);
}
}
@@ -2,6 +2,7 @@
namespace Appwrite\Platform\Modules\Databases\Http\Databases\Collections\Documents\Bulk;
use Appwrite\Event\Event;
use Appwrite\Event\StatsUsage;
use Appwrite\Extend\Exception;
use Appwrite\Platform\Modules\Databases\Http\Databases\Collections\Documents\Action;
@@ -76,11 +77,15 @@ class Update extends Action
->inject('response')
->inject('dbForProject')
->inject('queueForStatsUsage')
->inject('queueForEvents')
->inject('queueForRealtime')
->inject('queueForFunctions')
->inject('queueForWebhooks')
->inject('plan')
->callback($this->action(...));
}
public function action(string $databaseId, string $collectionId, string|array $data, array $queries, UtopiaResponse $response, Database $dbForProject, StatsUsage $queueForStatsUsage, array $plan): void
public function action(string $databaseId, string $collectionId, string|array $data, array $queries, UtopiaResponse $response, Database $dbForProject, StatsUsage $queueForStatsUsage, Event $queueForEvents, Event $queueForRealtime, Event $queueForFunctions, Event $queueForWebhooks, array $plan): void
{
$data = \is_string($data)
? \json_decode($data, true)
@@ -158,5 +163,16 @@ class Update extends Action
'total' => $modified,
$this->getSdkGroup() => $documents
]), $this->getResponseModel());
$this->triggerBulk(
'databases.[databaseId].collections.[collectionId].documents.[documentId].update',
$database,
$collection,
$documents,
$queueForEvents,
$queueForRealtime,
$queueForFunctions,
$queueForWebhooks
);
}
}
@@ -122,10 +122,12 @@ class Create extends Action
->inject('user')
->inject('queueForEvents')
->inject('queueForStatsUsage')
->inject('queueForRealtime')
->inject('queueForFunctions')
->inject('queueForWebhooks')
->callback($this->action(...));
}
public function action(string $databaseId, string $documentId, string $collectionId, string|array $data, ?array $permissions, ?array $documents, UtopiaResponse $response, Database $dbForProject, Document $user, Event $queueForEvents, StatsUsage $queueForStatsUsage): void
public function action(string $databaseId, string $documentId, string $collectionId, string|array $data, ?array $permissions, ?array $documents, UtopiaResponse $response, Database $dbForProject, Document $user, Event $queueForEvents, StatsUsage $queueForStatsUsage, Event $queueForRealtime, Event $queueForFunctions, Event $queueForWebhooks): void
{
$data = \is_string($data)
? \json_decode($data, true)
@@ -417,6 +419,16 @@ class Create extends Action
$this->getSdkGroup() => $documents
]), $this->getBulkResponseModel());
$this->triggerBulk(
'databases.[databaseId].collections.[collectionId].documents.[documentId].create',
$database,
$collection,
$documents,
$queueForEvents,
$queueForRealtime,
$queueForFunctions,
$queueForWebhooks
);
return;
}
@@ -59,6 +59,10 @@ class Delete extends DocumentsDelete
->inject('response')
->inject('dbForProject')
->inject('queueForStatsUsage')
->inject('queueForEvents')
->inject('queueForRealtime')
->inject('queueForFunctions')
->inject('queueForWebhooks')
->inject('plan')
->callback($this->action(...));
}
@@ -61,6 +61,10 @@ class Update extends DocumentsUpdate
->inject('response')
->inject('dbForProject')
->inject('queueForStatsUsage')
->inject('queueForEvents')
->inject('queueForRealtime')
->inject('queueForFunctions')
->inject('queueForWebhooks')
->inject('plan')
->callback($this->action(...));
}
@@ -101,6 +101,9 @@ class Create extends DocumentCreate
->inject('user')
->inject('queueForEvents')
->inject('queueForStatsUsage')
->inject('queueForRealtime')
->inject('queueForFunctions')
->inject('queueForWebhooks')
->callback($this->action(...));
}
}