Merge pull request #5145 from appwrite/feat-remove-index-requirements

Remove indexed attribute query requirement
This commit is contained in:
Jake Barnby
2023-03-01 21:42:29 +13:00
committed by GitHub
4 changed files with 13 additions and 14 deletions
+1 -1
View File
@@ -2007,7 +2007,7 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents')
}
// Validate queries
$queriesValidator = new Documents($collection->getAttribute('attributes'), $collection->getAttribute('indexes'));
$queriesValidator = new Documents($collection->getAttribute('attributes'));
$validQueries = $queriesValidator->isValid($queries);
if (!$validQueries) {
throw new Exception(Exception::GENERAL_ARGUMENT_INVALID, $queriesValidator->getDescription());
@@ -27,7 +27,7 @@ class IndexedQueries extends Queries
* @param Document[] $attributes
* @param Document[] $indexes
* @param Base ...$validators
* @param bool $strict
* @throws \Exception
*/
public function __construct($attributes = [], $indexes = [], Base ...$validators)
{
@@ -2,24 +2,24 @@
namespace Appwrite\Utopia\Database\Validator\Queries;
use Appwrite\Utopia\Database\Validator\IndexedQueries;
use Appwrite\Utopia\Database\Validator\Query\Limit;
use Appwrite\Utopia\Database\Validator\Query\Offset;
use Appwrite\Utopia\Database\Validator\Queries;
use Appwrite\Utopia\Database\Validator\Query\Cursor;
use Appwrite\Utopia\Database\Validator\Query\Filter;
use Appwrite\Utopia\Database\Validator\Query\Limit;
use Appwrite\Utopia\Database\Validator\Query\Offset;
use Appwrite\Utopia\Database\Validator\Query\Order;
use Utopia\Database\Database;
use Utopia\Database\Document;
class Documents extends IndexedQueries
class Documents extends Queries
{
/**
* Expression constructor
*
* @param Document[] $attributes
* @param Document[] $indexes
* @throws \Exception
*/
public function __construct(array $attributes, array $indexes)
public function __construct(array $attributes)
{
$attributes[] = new Document([
'key' => '$id',
@@ -45,6 +45,6 @@ class Documents extends IndexedQueries
new Order($attributes),
];
parent::__construct($attributes, $indexes, ...$validators);
parent::__construct(...$validators);
}
}
@@ -1440,18 +1440,17 @@ trait DatabasesBase
$this->assertCount(0, $documents['body']['documents']);
/**
* Test for Failure
*/
$documents = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $data['moviesId'] . '/documents', array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $this->getProject()['$id'],
], $this->getHeaders()), [
'queries' => ['equal("actors", "Tom Holland")'],
]);
$this->assertEquals(400, $documents['headers']['status-code']);
$this->assertEquals('Index not found: actors', $documents['body']['message']);
$this->assertEquals(200, $documents['headers']['status-code']);
/**
* Test for Failure
*/
$conditions = [];
for ($i = 0; $i < 101; $i++) {