From bf844677dfea588aa0113ee0c2b7e5296d4d8170 Mon Sep 17 00:00:00 2001 From: fogelito Date: Wed, 28 Feb 2024 17:30:18 +0200 Subject: [PATCH] Remove $collectionId & $databaseId on select query --- app/controllers/api/databases.php | 41 +++++-------------- .../e2e/Services/Databases/DatabasesBase.php | 1 - 2 files changed, 11 insertions(+), 31 deletions(-) diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 6a9cb73a67..e6d7dff4c6 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -3038,15 +3038,23 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents') throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); } + $selections = Query::groupByType($queries)['selections']; + var_dump($selections); + // Add $collectionId and $databaseId for all documents - $processDocument = (function (Document $collection, Document $document) use (&$processDocument, $dbForProject, $database): bool { + $processDocument = (function (Document $collection, Document $document) use (&$processDocument, $dbForProject, $database, $selections): bool { if ($document->isEmpty()) { return false; } $document->removeAttribute('$collection'); - $document->setAttribute('$databaseId', $database->getId()); - $document->setAttribute('$collectionId', $collection->getId()); + + if (empty($selections)) { + // todo: what if someone Query::select(['*']) or Query::select(['users.*']) or or Query::select(['relatedAttributes.*']) + + $document->setAttribute('$databaseId', $database->getId()); + $document->setAttribute('$collectionId', $collection->getId()); + } $relationships = \array_filter( $collection->getAttribute('attributes', []), @@ -3090,33 +3098,6 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents') $processDocument($collection, $document); } - $select = \array_reduce($queries, function ($result, $query) { - return $result || ($query->getMethod() === Query::TYPE_SELECT); - }, false); - - // Check if the SELECT query includes $databaseId and $collectionId - $hasDatabaseId = false; - $hasCollectionId = false; - if ($select) { - $hasDatabaseId = \array_reduce($queries, function ($result, $query) { - return $result || ($query->getMethod() === Query::TYPE_SELECT && \in_array('$databaseId', $query->getValues())); - }, false); - $hasCollectionId = \array_reduce($queries, function ($result, $query) { - return $result || ($query->getMethod() === Query::TYPE_SELECT && \in_array('$collectionId', $query->getValues())); - }, false); - } - - if ($select) { - foreach ($documents as $document) { - if (!$hasDatabaseId) { - $document->removeAttribute('$databaseId'); - } - if (!$hasCollectionId) { - $document->removeAttribute('$collectionId'); - } - } - } - $response->dynamic(new Document([ 'total' => $total, 'documents' => $documents, diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index d91122e4fa..526f91192c 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -1643,7 +1643,6 @@ trait DatabasesBase Query::orderAsc('releaseYear')->toString(), ], ]); - $this->assertEquals(200, $documents['headers']['status-code']); $this->assertEquals(1944, $documents['body']['documents'][0]['releaseYear']); $this->assertEquals(2017, $documents['body']['documents'][1]['releaseYear']);