From b2b714f71315bc877285f8f7b89182e5c33914b8 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Mon, 22 Aug 2022 13:48:35 +0000 Subject: [PATCH 01/11] feat: update naming convention and folder structure --- composer.lock | 16 +-- .../Validator/{Queries => }/Collection.php | 0 .../Queries/LimitOffsetCursorQuery.php | 64 ------------ .../Utopia/Database/Validator/Query.php | 21 ---- .../Database/Validator/Query/Cursor.php | 44 +++++++++ .../Filter.php} | 43 ++------ .../Utopia/Database/Validator/Query/Limit.php | 97 +++++++++++++++++++ .../LimitOffsetQuery.php => Query/Offset.php} | 42 +++----- .../Order.php} | 28 +++--- .../Validator/{Queries => }/Users.php | 0 10 files changed, 184 insertions(+), 171 deletions(-) rename src/Appwrite/Utopia/Database/Validator/{Queries => }/Collection.php (100%) delete mode 100644 src/Appwrite/Utopia/Database/Validator/Queries/LimitOffsetCursorQuery.php delete mode 100644 src/Appwrite/Utopia/Database/Validator/Query.php create mode 100644 src/Appwrite/Utopia/Database/Validator/Query/Cursor.php rename src/Appwrite/Utopia/Database/Validator/{Queries/LimitOffsetCursorFilterQuery.php => Query/Filter.php} (65%) create mode 100644 src/Appwrite/Utopia/Database/Validator/Query/Limit.php rename src/Appwrite/Utopia/Database/Validator/{Queries/LimitOffsetQuery.php => Query/Offset.php} (56%) rename src/Appwrite/Utopia/Database/Validator/{Queries/LimitOffsetCursorFilterOrderQuery.php => Query/Order.php} (52%) rename src/Appwrite/Utopia/Database/Validator/{Queries => }/Users.php (100%) diff --git a/composer.lock b/composer.lock index eb5849095..b9176fe53 100644 --- a/composer.lock +++ b/composer.lock @@ -3526,23 +3526,23 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.15", + "version": "9.2.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" + "reference": "2593003befdcc10db5e213f9f28814f5aa8ac073" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2593003befdcc10db5e213f9f28814f5aa8ac073", + "reference": "2593003befdcc10db5e213f9f28814f5aa8ac073", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", + "nikic/php-parser": "^4.14", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -3591,7 +3591,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.16" }, "funding": [ { @@ -3599,7 +3599,7 @@ "type": "github" } ], - "time": "2022-03-07T09:28:20+00:00" + "time": "2022-08-20T05:26:47+00:00" }, { "name": "phpunit/php-file-iterator", @@ -5383,5 +5383,5 @@ "platform-overrides": { "php": "8.0" }, - "plugin-api-version": "2.2.0" + "plugin-api-version": "2.3.0" } diff --git a/src/Appwrite/Utopia/Database/Validator/Queries/Collection.php b/src/Appwrite/Utopia/Database/Validator/Collection.php similarity index 100% rename from src/Appwrite/Utopia/Database/Validator/Queries/Collection.php rename to src/Appwrite/Utopia/Database/Validator/Collection.php diff --git a/src/Appwrite/Utopia/Database/Validator/Queries/LimitOffsetCursorQuery.php b/src/Appwrite/Utopia/Database/Validator/Queries/LimitOffsetCursorQuery.php deleted file mode 100644 index f74d41474..000000000 --- a/src/Appwrite/Utopia/Database/Validator/Queries/LimitOffsetCursorQuery.php +++ /dev/null @@ -1,64 +0,0 @@ -isValid($cursor)) { - return true; - } - - $this->message = 'Invalid cursor: ' . $validator->getDescription(); - return false; - } - - /** - * Is valid. - * - * Returns true if: - * 1. method is limit or offset and values are within range - * 2. method is cursorBefore or cursorAfter and value is not null - * - * Otherwise, returns false - * - * @param Query $value - * - * @return bool - */ - public function isValid($query): bool - { - // Validate method - $method = $query->getMethod(); - - if ($method === Query::TYPE_CURSORAFTER || $method === Query::TYPE_CURSORBEFORE) { - $cursor = $query->getValue(); - return $this->isValidCursor($cursor); - } - - return parent::isValid($query); - } -} diff --git a/src/Appwrite/Utopia/Database/Validator/Query.php b/src/Appwrite/Utopia/Database/Validator/Query.php deleted file mode 100644 index eeb5b51a7..000000000 --- a/src/Appwrite/Utopia/Database/Validator/Query.php +++ /dev/null @@ -1,21 +0,0 @@ -isValid($cursor)) { - return true; - } - - $this->message = 'Invalid cursor: ' . $validator->getDescription(); - return false; - } -} diff --git a/src/Appwrite/Utopia/Database/Validator/Query/Cursor.php b/src/Appwrite/Utopia/Database/Validator/Query/Cursor.php new file mode 100644 index 000000000..0fb77ee0b --- /dev/null +++ b/src/Appwrite/Utopia/Database/Validator/Query/Cursor.php @@ -0,0 +1,44 @@ +getMethod(); + + if ($method === Query::TYPE_CURSORAFTER || $method === Query::TYPE_CURSORBEFORE) { + $cursor = $query->getValue(); + $validator = new UID(); + if ($validator->isValid($cursor)) { + return true; + } + $this->message = 'Invalid cursor: ' . $validator->getDescription(); + return false; + } + + return false; + } +} diff --git a/src/Appwrite/Utopia/Database/Validator/Queries/LimitOffsetCursorFilterQuery.php b/src/Appwrite/Utopia/Database/Validator/Query/Filter.php similarity index 65% rename from src/Appwrite/Utopia/Database/Validator/Queries/LimitOffsetCursorFilterQuery.php rename to src/Appwrite/Utopia/Database/Validator/Query/Filter.php index 71da60870..e32b3aab6 100644 --- a/src/Appwrite/Utopia/Database/Validator/Queries/LimitOffsetCursorFilterQuery.php +++ b/src/Appwrite/Utopia/Database/Validator/Query/Filter.php @@ -1,12 +1,12 @@ schema[$attribute->getAttribute('key')] = $attribute->getArrayCopy(); } $this->maxValuesCount = $maxValuesCount; - - parent::__construct($maxLimit, $maxOffset); } protected function isValidAttribute($attribute): bool @@ -78,30 +74,10 @@ class LimitOffsetCursorFilterQuery extends LimitOffsetCursorQuery return true; } - protected function isValidContains(string $attribute, array $values): bool - { - if (!$this->isValidAttributeAndValues($attribute, $values)) { - return false; - } - - $attributeSchema = $this->schema[$attribute]; - - // Contains method only supports array attributes - if (!$attributeSchema['array']) { - $this->message = 'Query method only supported on array attributes: ' . Query::TYPE_CONTAINS; - return false; - } - - return true; - } - /** * Is valid. * - * Returns true if: - * 1. method is limit or offset and values are within range - * 2. method is cursorBefore or cursorAfter and value is not null - * 3. method is a filter method, attribute exists, and value matches attribute type + * Returns true if method is a filter method, attribute exists, and value matches attribute type * * Otherwise, returns false * @@ -116,9 +92,10 @@ class LimitOffsetCursorFilterQuery extends LimitOffsetCursorQuery $attribute = $query->getAttribute(); switch ($method) { - case Query::TYPE_CONTAINS: - $values = $query->getValues(); - return $this->isValidContains($attribute, $values); + // Do we support contains ? + // case Query::TYPE_CONTAINS: + // $values = $query->getValues(); + // return $this->isValidContains($attribute, $values); case Query::TYPE_EQUAL: case Query::TYPE_NOTEQUAL: @@ -131,7 +108,7 @@ class LimitOffsetCursorFilterQuery extends LimitOffsetCursorQuery return $this->isValidAttributeAndValues($attribute, $values); default: - return parent::isValid($query); + return false; } } } diff --git a/src/Appwrite/Utopia/Database/Validator/Query/Limit.php b/src/Appwrite/Utopia/Database/Validator/Query/Limit.php new file mode 100644 index 000000000..63f681f7d --- /dev/null +++ b/src/Appwrite/Utopia/Database/Validator/Query/Limit.php @@ -0,0 +1,97 @@ +maxLimit = $maxLimit; + } + + /** + * Get Description. + * + * Returns validator description + * + * @return string + */ + public function getDescription(): string + { + return $this->message; + } + + protected function isValidLimit($limit): bool + { + $validator = new Range(0, $this->maxLimit); + if ($validator->isValid($limit)) { + return true; + } + + $this->message = 'Invalid limit: ' . $validator->getDescription(); + return false; + } + + /** + * Is valid. + * + * Returns true if method is limit values are within range. + * + * @param Query $value + * + * @return bool + */ + public function isValid($query): bool + { + // Validate method + $method = $query->getMethod(); + + if ($method !== Query::LIMIT) { + $this->message = 'Query method invalid: ' . $method; + return false; + } + + $limit = $query->getValue(); + return $this->isValidLimit($limit); + } + + /** + * Is array + * + * Function will return true if object is array. + * + * @return bool + */ + public function isArray(): bool + { + return false; + } + + /** + * Get Type + * + * Returns validator type. + * + * @return string + */ + public function getType(): string + { + return self::TYPE_OBJECT; + } +} diff --git a/src/Appwrite/Utopia/Database/Validator/Queries/LimitOffsetQuery.php b/src/Appwrite/Utopia/Database/Validator/Query/Offset.php similarity index 56% rename from src/Appwrite/Utopia/Database/Validator/Queries/LimitOffsetQuery.php rename to src/Appwrite/Utopia/Database/Validator/Query/Offset.php index e11590757..a319c9150 100644 --- a/src/Appwrite/Utopia/Database/Validator/Queries/LimitOffsetQuery.php +++ b/src/Appwrite/Utopia/Database/Validator/Query/Offset.php @@ -1,31 +1,27 @@ maxLimit = $maxLimit; $this->maxOffset = $maxOffset; } @@ -41,17 +37,6 @@ class LimitOffsetQuery extends Validator return $this->message; } - protected function isValidLimit($limit): bool - { - $validator = new Range(0, $this->maxLimit); - if ($validator->isValid($limit)) { - return true; - } - - $this->message = 'Invalid limit: ' . $validator->getDescription(); - return false; - } - protected function isValidOffset($offset): bool { $validator = new Range(0, $this->maxOffset); @@ -66,7 +51,7 @@ class LimitOffsetQuery extends Validator /** * Is valid. * - * Returns true if method is limit or offset and values are within range. + * Returns true if method is offset and values are within range. * * @param Query $value * @@ -76,19 +61,14 @@ class LimitOffsetQuery extends Validator { // Validate method $method = $query->getMethod(); - switch ($method) { - case Query::TYPE_LIMIT: - $limit = $query->getValue(); - return $this->isValidLimit($limit); - - case Query::TYPE_OFFSET: - $offset = $query->getValue(); - return $this->isValidOffset($offset); - - default: - $this->message = 'Query method invalid: ' . $method; - return false; + + if ($method !== Query::TYPE_OFFSET) { + $this->message = 'Query method invalid: ' . $method; + return false; } + + $offset = $query->getValue(); + return $this->isValidOffset($offset); } /** diff --git a/src/Appwrite/Utopia/Database/Validator/Queries/LimitOffsetCursorFilterOrderQuery.php b/src/Appwrite/Utopia/Database/Validator/Query/Order.php similarity index 52% rename from src/Appwrite/Utopia/Database/Validator/Queries/LimitOffsetCursorFilterOrderQuery.php rename to src/Appwrite/Utopia/Database/Validator/Query/Order.php index 3a8459fa4..9ee40fa11 100644 --- a/src/Appwrite/Utopia/Database/Validator/Queries/LimitOffsetCursorFilterOrderQuery.php +++ b/src/Appwrite/Utopia/Database/Validator/Query/Order.php @@ -1,11 +1,11 @@ schema[$attribute->getAttribute('key')] = $attribute->getArrayCopy(); } + } - $this->maxValuesCount = $maxValuesCount; + protected function isValidAttribute($attribute): bool + { + // Search for attribute in schema + if (!isset($this->schema[$attribute])) { + $this->message = 'Attribute not found in schema: ' . $attribute; + return false; + } - parent::__construct($maxLimit, $maxOffset); + return true; } /** * Is valid. * - * Returns true if: - * 1. method is limit or offset and values are within range - * 2. method is cursorBefore or cursorAfter and value is not null - * 3. method is a filter method, attribute exists, and value matches attribute type - * 4. method is orderAsc or orderDesc and attribute exists or is empty string + * Returns true if method is ORDER_ASC or ORDER_DESC and attributes are valid * * Otherwise, returns false * diff --git a/src/Appwrite/Utopia/Database/Validator/Queries/Users.php b/src/Appwrite/Utopia/Database/Validator/Users.php similarity index 100% rename from src/Appwrite/Utopia/Database/Validator/Queries/Users.php rename to src/Appwrite/Utopia/Database/Validator/Users.php From 228bedd6d01d70c6ac0c321600f9ac5a60bcd5db Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Mon, 22 Aug 2022 14:05:49 +0000 Subject: [PATCH 02/11] feat: update file structure --- src/Appwrite/Utopia/Database/Validator/Queries.php | 2 -- .../Utopia/Database/Validator/{ => Queries}/Collection.php | 0 src/Appwrite/Utopia/Database/Validator/{ => Queries}/Users.php | 0 3 files changed, 2 deletions(-) rename src/Appwrite/Utopia/Database/Validator/{ => Queries}/Collection.php (100%) rename src/Appwrite/Utopia/Database/Validator/{ => Queries}/Users.php (100%) diff --git a/src/Appwrite/Utopia/Database/Validator/Queries.php b/src/Appwrite/Utopia/Database/Validator/Queries.php index cc675429e..83248b4eb 100644 --- a/src/Appwrite/Utopia/Database/Validator/Queries.php +++ b/src/Appwrite/Utopia/Database/Validator/Queries.php @@ -23,8 +23,6 @@ class Queries extends Validator * Queries constructor * * @param Validator $validator used to validate each query - * @param Document[] $attributes allowed attributes to be queried - * @param Document[] $indexes available for strict query matching * @param bool $strict */ public function __construct(Validator $validator) diff --git a/src/Appwrite/Utopia/Database/Validator/Collection.php b/src/Appwrite/Utopia/Database/Validator/Queries/Collection.php similarity index 100% rename from src/Appwrite/Utopia/Database/Validator/Collection.php rename to src/Appwrite/Utopia/Database/Validator/Queries/Collection.php diff --git a/src/Appwrite/Utopia/Database/Validator/Users.php b/src/Appwrite/Utopia/Database/Validator/Queries/Users.php similarity index 100% rename from src/Appwrite/Utopia/Database/Validator/Users.php rename to src/Appwrite/Utopia/Database/Validator/Queries/Users.php From afa71bcaf3eafcdf70358c5316f936ed69f29691 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Mon, 22 Aug 2022 14:09:04 +0000 Subject: [PATCH 03/11] feat: update file structure --- .../Database/Validator/{Queries => Queries-123}/Collection.php | 0 .../Utopia/Database/Validator/{Queries => Queries-123}/Users.php | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename src/Appwrite/Utopia/Database/Validator/{Queries => Queries-123}/Collection.php (100%) rename src/Appwrite/Utopia/Database/Validator/{Queries => Queries-123}/Users.php (100%) diff --git a/src/Appwrite/Utopia/Database/Validator/Queries/Collection.php b/src/Appwrite/Utopia/Database/Validator/Queries-123/Collection.php similarity index 100% rename from src/Appwrite/Utopia/Database/Validator/Queries/Collection.php rename to src/Appwrite/Utopia/Database/Validator/Queries-123/Collection.php diff --git a/src/Appwrite/Utopia/Database/Validator/Queries/Users.php b/src/Appwrite/Utopia/Database/Validator/Queries-123/Users.php similarity index 100% rename from src/Appwrite/Utopia/Database/Validator/Queries/Users.php rename to src/Appwrite/Utopia/Database/Validator/Queries-123/Users.php From 3fe22b7ed02c1696f8b8e13435218c0135e217de Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Mon, 22 Aug 2022 14:10:10 +0000 Subject: [PATCH 04/11] feat: update file structure --- .../Database/Validator/{Queries-123 => Queries}/Collection.php | 0 .../Utopia/Database/Validator/{Queries-123 => Queries}/Users.php | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename src/Appwrite/Utopia/Database/Validator/{Queries-123 => Queries}/Collection.php (100%) rename src/Appwrite/Utopia/Database/Validator/{Queries-123 => Queries}/Users.php (100%) diff --git a/src/Appwrite/Utopia/Database/Validator/Queries-123/Collection.php b/src/Appwrite/Utopia/Database/Validator/Queries/Collection.php similarity index 100% rename from src/Appwrite/Utopia/Database/Validator/Queries-123/Collection.php rename to src/Appwrite/Utopia/Database/Validator/Queries/Collection.php diff --git a/src/Appwrite/Utopia/Database/Validator/Queries-123/Users.php b/src/Appwrite/Utopia/Database/Validator/Queries/Users.php similarity index 100% rename from src/Appwrite/Utopia/Database/Validator/Queries-123/Users.php rename to src/Appwrite/Utopia/Database/Validator/Queries/Users.php From 0304a579159514d82fa69b3bb35c080a49d87d06 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Mon, 22 Aug 2022 14:12:52 +0000 Subject: [PATCH 05/11] feat: remove queries --- .../Database/Validator/Queries/Collection.php | 58 ------------------- .../Database/Validator/Queries/Users.php | 31 ---------- 2 files changed, 89 deletions(-) delete mode 100644 src/Appwrite/Utopia/Database/Validator/Queries/Collection.php delete mode 100644 src/Appwrite/Utopia/Database/Validator/Queries/Users.php diff --git a/src/Appwrite/Utopia/Database/Validator/Queries/Collection.php b/src/Appwrite/Utopia/Database/Validator/Queries/Collection.php deleted file mode 100644 index 0404f299a..000000000 --- a/src/Appwrite/Utopia/Database/Validator/Queries/Collection.php +++ /dev/null @@ -1,58 +0,0 @@ - $key, - 'type' => $attribute['type'], - 'array' => $attribute['array'], - ]); - } - - $indexes = []; - foreach ($allowedAttributes as $attribute) { - $indexes[] = new Document([ - 'status' => 'available', - 'type' => Database::INDEX_KEY, - 'attributes' => [$attribute] - ]); - } - $indexes[] = new Document([ - 'status' => 'available', - 'type' => Database::INDEX_FULLTEXT, - 'attributes' => ['search'] - ]); - - parent::__construct(new QueryValidator($attributes), $attributes, $indexes, true); - } -} diff --git a/src/Appwrite/Utopia/Database/Validator/Queries/Users.php b/src/Appwrite/Utopia/Database/Validator/Queries/Users.php deleted file mode 100644 index 59373c2ca..000000000 --- a/src/Appwrite/Utopia/Database/Validator/Queries/Users.php +++ /dev/null @@ -1,31 +0,0 @@ - Date: Mon, 22 Aug 2022 14:14:40 +0000 Subject: [PATCH 06/11] feat: remove queries --- .../Database/Validator/Queries/Collection.php | 58 +++++++++++++++++++ .../Database/Validator/Queries/Users.php | 31 ++++++++++ 2 files changed, 89 insertions(+) create mode 100644 src/Appwrite/Utopia/Database/Validator/Queries/Collection.php create mode 100644 src/Appwrite/Utopia/Database/Validator/Queries/Users.php diff --git a/src/Appwrite/Utopia/Database/Validator/Queries/Collection.php b/src/Appwrite/Utopia/Database/Validator/Queries/Collection.php new file mode 100644 index 000000000..dffaabee6 --- /dev/null +++ b/src/Appwrite/Utopia/Database/Validator/Queries/Collection.php @@ -0,0 +1,58 @@ + $key, + 'type' => $attribute['type'], + 'array' => $attribute['array'], + ]); + } + + $indexes = []; + foreach ($allowedAttributes as $attribute) { + $indexes[] = new Document([ + 'status' => 'available', + 'type' => Database::INDEX_KEY, + 'attributes' => [$attribute] + ]); + } + $indexes[] = new Document([ + 'status' => 'available', + 'type' => Database::INDEX_FULLTEXT, + 'attributes' => ['search'] + ]); + + parent::__construct(new QueryValidator($attributes), $attributes, $indexes, true); + } +} \ No newline at end of file diff --git a/src/Appwrite/Utopia/Database/Validator/Queries/Users.php b/src/Appwrite/Utopia/Database/Validator/Queries/Users.php new file mode 100644 index 000000000..b61ec9c08 --- /dev/null +++ b/src/Appwrite/Utopia/Database/Validator/Queries/Users.php @@ -0,0 +1,31 @@ + Date: Mon, 22 Aug 2022 14:37:35 +0000 Subject: [PATCH 07/11] feat: update queries constructor --- src/Appwrite/Utopia/Database/Validator/Queries.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Appwrite/Utopia/Database/Validator/Queries.php b/src/Appwrite/Utopia/Database/Validator/Queries.php index 83248b4eb..8bcf60fe1 100644 --- a/src/Appwrite/Utopia/Database/Validator/Queries.php +++ b/src/Appwrite/Utopia/Database/Validator/Queries.php @@ -25,9 +25,9 @@ class Queries extends Validator * @param Validator $validator used to validate each query * @param bool $strict */ - public function __construct(Validator $validator) + public function __construct(...$validators) { - $this->validator = $validator; + $this->validators = $validators; } /** From 0fd55cb13caeeccb86c3519b368c6842f31d9892 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Mon, 22 Aug 2022 14:44:28 +0000 Subject: [PATCH 08/11] feat: update queries constructor --- src/Appwrite/Utopia/Database/Validator/Queries.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Appwrite/Utopia/Database/Validator/Queries.php b/src/Appwrite/Utopia/Database/Validator/Queries.php index 8bcf60fe1..d518ae64e 100644 --- a/src/Appwrite/Utopia/Database/Validator/Queries.php +++ b/src/Appwrite/Utopia/Database/Validator/Queries.php @@ -22,10 +22,9 @@ class Queries extends Validator /** * Queries constructor * - * @param Validator $validator used to validate each query - * @param bool $strict + * @param $validators - a list of validators */ - public function __construct(...$validators) + public function __construct(Validator ...$validators) { $this->validators = $validators; } @@ -66,9 +65,11 @@ class Queries extends Validator } } - if (!$this->validator->isValid($query)) { - $this->message = 'Query not valid: ' . $this->validator->getDescription(); - return false; + foreach ($this->validators as $validator) { + if (!$validator->isValid($query)) { + $this->message = 'Query not valid: ' . $this->validator->getDescription(); + return false; + } } $queries[] = $query; From cff0fd9476f24f67c811a85af3cd813752bfdfbc Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Mon, 22 Aug 2022 15:04:55 +0000 Subject: [PATCH 09/11] feat: update queries constructor --- .../Utopia/Database/Validator/Queries.php | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/Appwrite/Utopia/Database/Validator/Queries.php b/src/Appwrite/Utopia/Database/Validator/Queries.php index d518ae64e..1ad5b2e74 100644 --- a/src/Appwrite/Utopia/Database/Validator/Queries.php +++ b/src/Appwrite/Utopia/Database/Validator/Queries.php @@ -24,9 +24,11 @@ class Queries extends Validator * * @param $validators - a list of validators */ - public function __construct(Validator ...$validators) + public function __construct(Limit $limit = null, Offset $offset = null, Order $order) { - $this->validators = $validators; + $this->limit = $limit; + $this->offset = $offset; + $this->order = $order; } /** @@ -65,11 +67,21 @@ class Queries extends Validator } } - foreach ($this->validators as $validator) { - if (!$validator->isValid($query)) { - $this->message = 'Query not valid: ' . $this->validator->getDescription(); + $method = $query->getMethod(); + switch ($method) { + case Query::TYPE_LIMIT: + $validator = $this->limit; + case Query::TYPE_OFFSET: + $validator = $this->offset; + case Query::TYPE_ORDER: + $validator = $this->order; + default: return false; - } + } + + if (!$validator->isValid($query)) { + $this->message = 'Query not valid: ' . $this->validator->getDescription(); + return false; } $queries[] = $query; From 464738274d0aa4a56a270395e587511cd9b5e05f Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Mon, 22 Aug 2022 15:06:11 +0000 Subject: [PATCH 10/11] feat: update queries constructor --- src/Appwrite/Utopia/Database/Validator/Queries.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Appwrite/Utopia/Database/Validator/Queries.php b/src/Appwrite/Utopia/Database/Validator/Queries.php index 1ad5b2e74..0c3d144eb 100644 --- a/src/Appwrite/Utopia/Database/Validator/Queries.php +++ b/src/Appwrite/Utopia/Database/Validator/Queries.php @@ -79,7 +79,7 @@ class Queries extends Validator return false; } - if (!$validator->isValid($query)) { + if ($validator && !$validator->isValid($query)) { $this->message = 'Query not valid: ' . $this->validator->getDescription(); return false; } From e09cb3a1cb5550c7e8c646a94e4497deb465a997 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Mon, 22 Aug 2022 15:11:47 +0000 Subject: [PATCH 11/11] feat: update queries constructor --- src/Appwrite/Utopia/Database/Validator/Queries.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Appwrite/Utopia/Database/Validator/Queries.php b/src/Appwrite/Utopia/Database/Validator/Queries.php index 0c3d144eb..826f783c4 100644 --- a/src/Appwrite/Utopia/Database/Validator/Queries.php +++ b/src/Appwrite/Utopia/Database/Validator/Queries.php @@ -24,11 +24,13 @@ class Queries extends Validator * * @param $validators - a list of validators */ - public function __construct(Limit $limit = null, Offset $offset = null, Order $order) + public function __construct(Limit $limit = null, Offset $offset = null, Order $order = null, Cursor $cursor = null, Filter $filter = null) { $this->limit = $limit; $this->offset = $offset; $this->order = $order; + $this->filter = $filter; + $this->cursor = $cursor; } /**