From 947ad20badcaf25ee1e2b8c913642a9b378d043d Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Fri, 24 Mar 2023 16:44:28 +1300 Subject: [PATCH] Pass attribute to select validator --- src/Appwrite/Utopia/Database/Validator/Queries/Base.php | 2 +- src/Appwrite/Utopia/Database/Validator/Query/Filter.php | 3 ++- src/Appwrite/Utopia/Database/Validator/Query/Select.php | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Appwrite/Utopia/Database/Validator/Queries/Base.php b/src/Appwrite/Utopia/Database/Validator/Queries/Base.php index e392560c86..2f7fd5d60d 100644 --- a/src/Appwrite/Utopia/Database/Validator/Queries/Base.php +++ b/src/Appwrite/Utopia/Database/Validator/Queries/Base.php @@ -62,12 +62,12 @@ class Base extends Queries ]); $validators = [ - new Select(), new Limit(), new Offset(), new Cursor(), new Filter($attributes), new Order($attributes), + new Select($attributes), ]; parent::__construct(...$validators); diff --git a/src/Appwrite/Utopia/Database/Validator/Query/Filter.php b/src/Appwrite/Utopia/Database/Validator/Query/Filter.php index 5244e0756f..0be5ac7aad 100644 --- a/src/Appwrite/Utopia/Database/Validator/Query/Filter.php +++ b/src/Appwrite/Utopia/Database/Validator/Query/Filter.php @@ -61,7 +61,7 @@ class Filter extends Base foreach ($values as $value) { $condition = match ($attributeType) { - Database::VAR_RELATIONSHIP => true, // Todo: ? + Database::VAR_RELATIONSHIP => true, Database::VAR_DATETIME => gettype($value) === Database::VAR_STRING, default => gettype($value) === $attributeType }; @@ -91,6 +91,7 @@ class Filter extends Base // Validate method $method = $query->getMethod(); $attribute = $query->getAttribute(); + switch ($method) { case Query::TYPE_EQUAL: case Query::TYPE_NOTEQUAL: diff --git a/src/Appwrite/Utopia/Database/Validator/Query/Select.php b/src/Appwrite/Utopia/Database/Validator/Query/Select.php index f3ab1f6ae8..f1907f2e86 100644 --- a/src/Appwrite/Utopia/Database/Validator/Query/Select.php +++ b/src/Appwrite/Utopia/Database/Validator/Query/Select.php @@ -41,6 +41,8 @@ class Select extends Base foreach ($query->getValues() as $attribute) { if (\str_contains($attribute, '.')) { + // For relationships, just validate the top level. + // Utopia will validate each nested level during the recursive calls. $attribute = \explode('.', $attribute)[0]; } if (!isset($this->schema[$attribute]) && $attribute !== '*') {