New Queries Activation
This commit is contained in:
parent
588d6651a2
commit
969cff5e41
4 changed files with 104 additions and 26 deletions
|
@ -298,7 +298,6 @@ function updateAttribute(
|
|||
if ($type === Database::VAR_RELATIONSHIP) {
|
||||
$options = array_merge($attribute->getAttribute('options', []), $options);
|
||||
$attribute->setAttribute('options', $options);
|
||||
var_dump($options);
|
||||
|
||||
$dbForProject->updateRelationship(
|
||||
collection: $collectionId,
|
||||
|
|
|
@ -91,7 +91,6 @@ class Filter extends Base
|
|||
// Validate method
|
||||
$method = $query->getMethod();
|
||||
$attribute = $query->getAttribute();
|
||||
|
||||
switch ($method) {
|
||||
case Query::TYPE_EQUAL:
|
||||
case Query::TYPE_NOTEQUAL:
|
||||
|
@ -100,6 +99,11 @@ class Filter extends Base
|
|||
case Query::TYPE_GREATER:
|
||||
case Query::TYPE_GREATEREQUAL:
|
||||
case Query::TYPE_SEARCH:
|
||||
case Query::TYPE_STARTS_WITH:
|
||||
case Query::TYPE_ENDS_WITH:
|
||||
case Query::TYPE_BETWEEN:
|
||||
case Query::TYPE_IS_NULL:
|
||||
case Query::TYPE_IS_NOT_NULL:
|
||||
$values = $query->getValues();
|
||||
return $this->isValidAttributeAndValues($attribute, $values);
|
||||
|
||||
|
|
|
@ -8,10 +8,7 @@ use Utopia\Database\Query;
|
|||
|
||||
class Select extends Base
|
||||
{
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $schema = [];
|
||||
protected array $schema = [];
|
||||
|
||||
/**
|
||||
* Query constructor
|
||||
|
@ -46,7 +43,7 @@ class Select extends Base
|
|||
if (\str_contains($attribute, '.')) {
|
||||
$attribute = \explode('.', $attribute)[0];
|
||||
}
|
||||
if (!isset($this->schema[$attribute])) {
|
||||
if (!isset($this->schema[$attribute]) && $attribute !== '*') {
|
||||
$this->message = 'Attribute not found in schema: ' . $attribute;
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -274,6 +274,18 @@ trait DatabasesBase
|
|||
|
||||
$this->assertEquals(201, $library['headers']['status-code']);
|
||||
|
||||
$fullname = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $person['body']['$id'] . '/attributes/string', array_merge([
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
'x-appwrite-key' => $this->getProject()['apiKey']
|
||||
]), [
|
||||
'key' => 'fullName',
|
||||
'size' => 255,
|
||||
'required' => false,
|
||||
]);
|
||||
|
||||
sleep(1); // Wait for worker
|
||||
|
||||
$relation = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $person['body']['$id'] . '/attributes/relationship', array_merge([
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
|
@ -285,6 +297,8 @@ trait DatabasesBase
|
|||
'onDelete' => Database::RELATION_MUTATE_CASCADE,
|
||||
]);
|
||||
|
||||
sleep(1); // Wait for worker
|
||||
|
||||
$libraryName = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $library['body']['$id'] . '/attributes/string', array_merge([
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
|
@ -347,9 +361,7 @@ trait DatabasesBase
|
|||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
], $this->getHeaders()), [
|
||||
'queries' => [
|
||||
Query::equal('library', ['library1']),
|
||||
],
|
||||
'queries' => ['equal("library", "library1")', 'select(["library.*"])'],
|
||||
]);
|
||||
|
||||
$this->assertEquals(1, $documents['body']['total']);
|
||||
|
@ -430,6 +442,7 @@ trait DatabasesBase
|
|||
], $this->getHeaders()), [
|
||||
'documentId' => 'person10',
|
||||
'data' => [
|
||||
'fullName' => 'Stevie Wonder',
|
||||
'libraries' => [
|
||||
[
|
||||
'$id' => 'library10',
|
||||
|
@ -437,7 +450,7 @@ trait DatabasesBase
|
|||
Permission::read(Role::any()),
|
||||
Permission::update(Role::any()),
|
||||
Permission::delete(Role::any()),
|
||||
],
|
||||
],
|
||||
'libraryName' => 'Library 10',
|
||||
],
|
||||
[
|
||||
|
@ -504,7 +517,73 @@ trait DatabasesBase
|
|||
$this->assertEquals(false, $attribute['body']['twoWay']);
|
||||
$this->assertEquals(Database::RELATION_MUTATE_CASCADE, $attribute['body']['onDelete']);
|
||||
|
||||
return [];
|
||||
return ['databaseId' => $databaseId, 'personCollection' => $person['body']['$id']];
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testRelations
|
||||
*/
|
||||
public function testSelects(array $data): array
|
||||
{
|
||||
|
||||
$response = $this->client->call(Client::METHOD_GET, '/databases/' . $data['databaseId'] . '/collections/' . $data['personCollection'] . '/documents', array_merge([
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
], $this->getHeaders()), [
|
||||
'queries' => [
|
||||
'isNotNull("$id")',
|
||||
'isNull("fullName")',
|
||||
'startsWith("fullName", "Stevie")',
|
||||
'endsWith("fullName", "Wonder")',
|
||||
'between("$createdAt", ["1975-12-06", "2050-12-06"])',
|
||||
'select(["fullName"])'
|
||||
],
|
||||
]);
|
||||
|
||||
$this->assertEquals(200, $response['headers']['status-code']);
|
||||
|
||||
$response = $this->client->call(Client::METHOD_GET, '/databases/' . $data['databaseId'] . '/collections/' . $data['personCollection'] . '/documents', array_merge([
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
], $this->getHeaders()), [
|
||||
'queries' => [
|
||||
'equal("fullName", "Stevie Wonder")',
|
||||
'select(["fullName"])'
|
||||
],
|
||||
]);
|
||||
|
||||
$this->assertEquals(200, $response['headers']['status-code']);
|
||||
$this->assertArrayNotHasKey('libraries', $response['body']['documents'][0]);
|
||||
|
||||
$response = $this->client->call(Client::METHOD_GET, '/databases/' . $data['databaseId'] . '/collections/' . $data['personCollection'] . '/documents', array_merge([
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
], $this->getHeaders()), [
|
||||
'queries' => [
|
||||
'select(["libraries.*"])',
|
||||
],
|
||||
]);
|
||||
|
||||
$document = $response['body']['documents'][0];
|
||||
|
||||
$this->assertEquals(200, $response['headers']['status-code']);
|
||||
// $this->assertArrayNotHasKey('fullName', $document); // todo:this should work?
|
||||
|
||||
$response = $this->client->call(Client::METHOD_GET, '/databases/' . $data['databaseId'] . '/collections/' . $data['personCollection'] . '/documents/' . $document['$id'], array_merge([
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
], $this->getHeaders()), [
|
||||
'queries' => [
|
||||
// 'select(["fullName"])'
|
||||
],
|
||||
]);
|
||||
|
||||
var_dump($response);
|
||||
|
||||
$this->assertEquals(200, $response['headers']['status-code']);
|
||||
// $this->assertArrayNotHasKey('fullName', $doc);
|
||||
|
||||
die;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1391,22 +1470,21 @@ trait DatabasesBase
|
|||
public function testGetDocumentWithQueries(array $data): void
|
||||
{
|
||||
$databaseId = $data['databaseId'];
|
||||
$document = $data['documents'][0];
|
||||
|
||||
foreach ($data['documents'] as $document) {
|
||||
$response = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $document['$collectionId'] . '/documents/' . $document['$id'], array_merge([
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
], $this->getHeaders()), [
|
||||
'queries' => [
|
||||
'select(["title", "releaseYear"])',
|
||||
],
|
||||
]);
|
||||
$response = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $document['$collectionId'] . '/documents/' . $document['$id'], array_merge([
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
], $this->getHeaders()), [
|
||||
'queries' => [
|
||||
'select(["title", "releaseYear"])',
|
||||
],
|
||||
]);
|
||||
|
||||
$this->assertEquals(200, $response['headers']['status-code']);
|
||||
$this->assertEquals($document['title'], $response['body']['title']);
|
||||
$this->assertEquals($document['releaseYear'], $response['body']['releaseYear']);
|
||||
$this->assertArrayNotHasKey('birthDay', $response['body']);
|
||||
}
|
||||
$this->assertEquals(200, $response['headers']['status-code']);
|
||||
$this->assertEquals($document['title'], $response['body']['title']);
|
||||
$this->assertEquals($document['releaseYear'], $response['body']['releaseYear']);
|
||||
$this->assertArrayNotHasKey('birthDay', $response['body']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue