diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 96c47487ea..24c6eea415 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -4202,7 +4202,7 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') responses: [ new SDKResponse( code: Response::STATUS_CODE_OK, - model: Response::MODEL_BULK_OPERATION, + model: Response::MODEL_DOCUMENT_LIST, ) ], contentType: ContentType::JSON @@ -4290,6 +4290,17 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') $partialDocument = new Document($data); + $documents = []; + + $dbForProject->updateDocuments( + 'database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId(), + $partialDocument, + $queries, + onNext: function (Document $document) use (&$documents) { + $documents[] = $document; + }, + ); + $operations = 0; $processDocument = function (Document $collection, Document $document) use (&$processDocument, $dbForProject, $database, &$operations) { @@ -4326,14 +4337,9 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') } }; - $modified = $dbForProject->updateDocuments( - 'database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId(), - $partialDocument, - $queries, - onNext: function (Document $document) use ($collection, &$processDocument) { - $processDocument($collection, $document); - }, - ); + foreach ($documents as $document) { + $processDocument($collection, $document); + } $queueForStatsUsage ->addMetric(METRIC_DATABASES_OPERATIONS_WRITES, \max(1, $operations)) @@ -4341,8 +4347,9 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') $response ->dynamic(new Document([ - 'modified' => $modified - ]), Response::MODEL_BULK_OPERATION); + 'total' => \count($documents), + 'documents' => $documents + ]), Response::MODEL_DOCUMENT_LIST); }); App::delete('/v1/databases/:databaseId/collections/:collectionId/documents/:documentId') @@ -4492,7 +4499,7 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/documents') responses: [ new SDKResponse( code: Response::STATUS_CODE_OK, - model: Response::MODEL_BULK_OPERATION, + model: Response::MODEL_DOCUMENT_LIST, ) ], contentType: ContentType::JSON @@ -4535,6 +4542,16 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/documents') throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); } + $documents = []; + + $dbForProject->deleteDocuments( + 'database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId(), + $queries, + onNext: function (Document $document) use (&$documents) { + $documents[] = $document; + }, + ); + $operations = 0; $processDocument = (function (Document $collection, Document $document) use (&$processDocument, $dbForProject, $database, &$operations): bool { @@ -4585,13 +4602,9 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/documents') return true; }); - $modified = $dbForProject->deleteDocuments( - 'database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId(), - $queries, - onNext: function (Document $document) use ($collection, &$processDocument) { - $processDocument($collection, $document); - }, - ); + foreach ($documents as $document) { + $processDocument($collection, $document); + } $queueForStatsUsage ->addMetric(METRIC_DATABASES_OPERATIONS_WRITES, \max(1, $operations)) @@ -4599,8 +4612,9 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/documents') $response ->dynamic(new Document([ - 'modified' => $modified, - ]), Response::MODEL_BULK_OPERATION); + 'total' => \count($documents), + 'documents' => $documents, + ]), Response::MODEL_DOCUMENT_LIST); }); App::get('/v1/databases/usage') diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index a4e96df414..6cd565221f 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -93,16 +93,14 @@ $eventDatabaseListener = function (Document $project, Document $document, Respon $usageDatabaseListener = function (string $event, Document $document, StatsUsage $queueForStatsUsage) { $value = 1; - switch ($event) { - case Database::EVENT_DOCUMENTS_CREATE: - $value = $document->getAttribute('modified', 0); - break; - case Database::EVENT_DOCUMENT_DELETE: - $value = -1; - break; - case Database::EVENT_DOCUMENTS_DELETE: - $value = -1 * $document->getAttribute('modified', 0); - break; + if ($event === Database::EVENT_DOCUMENT_DELETE) { + $value = -1; + } + + if ($event === Database::EVENT_DOCUMENTS_DELETE) { + $value = -1 * $document->getAttribute('modified', 0); + } elseif ($event === Database::EVENT_DOCUMENTS_CREATE) { + $value = $document->getAttribute('modified', 0); } switch (true) { diff --git a/src/Appwrite/Utopia/Response.php b/src/Appwrite/Utopia/Response.php index 44d73cc187..55dc56e4f4 100644 --- a/src/Appwrite/Utopia/Response.php +++ b/src/Appwrite/Utopia/Response.php @@ -154,7 +154,6 @@ class Response extends SwooleResponse public const MODEL_INDEX_LIST = 'indexList'; public const MODEL_DOCUMENT = 'document'; public const MODEL_DOCUMENT_LIST = 'documentList'; - public const MODEL_BULK_OPERATION = 'bulkOperation'; // Database Attributes public const MODEL_ATTRIBUTE = 'attribute'; diff --git a/src/Appwrite/Utopia/Response/Model/BulkOperation.php b/src/Appwrite/Utopia/Response/Model/BulkOperation.php deleted file mode 100644 index 3ff83b53f6..0000000000 --- a/src/Appwrite/Utopia/Response/Model/BulkOperation.php +++ /dev/null @@ -1,40 +0,0 @@ -addRule('modified', [ - 'type' => self::TYPE_INTEGER, - 'description' => 'How many document were modified in this request.', - 'default' => 0, - 'example' => 10, - ]); - } - - /** - * Get Name - * - * @return string - */ - public function getName(): string - { - return 'BulkOperation'; - } - - /** - * Get Type - * - * @return string - */ - public function getType(): string - { - return Response::MODEL_BULK_OPERATION; - } -}