From 6cb89ef955f6dad154cf36fc7b7f165e40d5ffb6 Mon Sep 17 00:00:00 2001 From: kodumbeats Date: Tue, 8 Jun 2021 15:30:42 -0400 Subject: [PATCH] Create response models for indexes and attributes --- src/Appwrite/Utopia/Response.php | 8 ++ .../Utopia/Response/Model/Attribute.php | 77 +++++++++++++++++++ src/Appwrite/Utopia/Response/Model/Index.php | 65 ++++++++++++++++ 3 files changed, 150 insertions(+) create mode 100644 src/Appwrite/Utopia/Response/Model/Attribute.php create mode 100644 src/Appwrite/Utopia/Response/Model/Index.php diff --git a/src/Appwrite/Utopia/Response.php b/src/Appwrite/Utopia/Response.php index cc9e174f73..65ec5230a1 100644 --- a/src/Appwrite/Utopia/Response.php +++ b/src/Appwrite/Utopia/Response.php @@ -10,6 +10,7 @@ use Appwrite\Utopia\Response\Filter; use Appwrite\Utopia\Response\Model; use Appwrite\Utopia\Response\Model\None; use Appwrite\Utopia\Response\Model\Any; +use Appwrite\Utopia\Response\Model\Attribute; use Appwrite\Utopia\Response\Model\BaseList; use Appwrite\Utopia\Response\Model\Collection; use Appwrite\Utopia\Response\Model\Continent; @@ -22,6 +23,7 @@ use Appwrite\Utopia\Response\Model\ErrorDev; use Appwrite\Utopia\Response\Model\Execution; use Appwrite\Utopia\Response\Model\File; use Appwrite\Utopia\Response\Model\Func; +use Appwrite\Utopia\Response\Model\Index; use Appwrite\Utopia\Response\Model\JWT; use Appwrite\Utopia\Response\Model\Key; use Appwrite\Utopia\Response\Model\Language; @@ -63,6 +65,10 @@ class Response extends SwooleResponse // Database const MODEL_COLLECTION = 'collection'; const MODEL_COLLECTION_LIST = 'collectionList'; + const MODEL_ATTRIBUTE = 'attribute'; + const MODEL_ATTRIBUTE_LIST = 'attributeList'; + const MODEL_INDEX = 'index'; + const MODEL_INDEX_LIST = 'indexList'; const MODEL_RULE = 'rule'; const MODEL_DOCUMENT = 'document'; const MODEL_DOCUMENT_LIST = 'documentList'; @@ -150,6 +156,8 @@ class Response extends SwooleResponse ->setModel(new ErrorDev()) // Lists ->setModel(new BaseList('Collections List', self::MODEL_COLLECTION_LIST, 'collections', self::MODEL_COLLECTION)) + ->setModel(new BaseList('Attributes List', self::MODEL_ATTRIBUTE_LIST, 'attributes', self::MODEL_ATTRIBUTE)) + ->setModel(new BaseList('Indexes List', self::MODEL_INDEX_LIST, 'indexes', self::MODEL_INDEX)) ->setModel(new BaseList('Documents List', self::MODEL_DOCUMENT_LIST, 'documents', self::MODEL_DOCUMENT)) ->setModel(new BaseList('Users List', self::MODEL_USER_LIST, 'users', self::MODEL_USER)) ->setModel(new BaseList('Sessions List', self::MODEL_SESSION_LIST, 'sessions', self::MODEL_SESSION)) diff --git a/src/Appwrite/Utopia/Response/Model/Attribute.php b/src/Appwrite/Utopia/Response/Model/Attribute.php new file mode 100644 index 0000000000..523dc7acb2 --- /dev/null +++ b/src/Appwrite/Utopia/Response/Model/Attribute.php @@ -0,0 +1,77 @@ +addRule('$id', [ + 'type' => self::TYPE_STRING, + 'description' => 'Attribute ID.', + 'default' => '', + 'example' => '', + ]) + ->addRule('type', [ + 'type' => self::TYPE_STRING, + 'description' => 'Attribute type.', + 'default' => '', + 'example' => '', + ]) + ->addRule('size', [ + 'type' => self::TYPE_STRING, + 'description' => 'Attribute size.', + 'default' => 0, + 'example' => 0, + ]) + ->addRule('required', [ + 'type' => self::TYPE_BOOLEAN, + 'description' => 'Is attribute required?', + 'default' => false, + 'example' => false, + ]) + ->addRule('signed', [ + 'type' => self::TYPE_BOOLEAN, + 'description' => 'Is attribute signed?', + 'default' => true, + 'example' => true, + ]) + ->addRule('array', [ + 'type' => self::TYPE_BOOLEAN, + 'description' => 'Is attribute an array?', + 'default' => false, + 'example' => false, + ]) + ->addRule('filters', [ + 'type' => self::TYPE_JSON, + 'description' => 'Attribute filters.', + 'default' => [], + 'example' => [], + ]) + ; + } + + /** + * Get Name + * + * @return string + */ + public function getName():string + { + return 'Attribute'; + } + + /** + * Get Collection + * + * @return string + */ + public function getType():string + { + return Response::MODEL_ATTRIBUTE; + } +} \ No newline at end of file diff --git a/src/Appwrite/Utopia/Response/Model/Index.php b/src/Appwrite/Utopia/Response/Model/Index.php new file mode 100644 index 0000000000..a3212fd8e4 --- /dev/null +++ b/src/Appwrite/Utopia/Response/Model/Index.php @@ -0,0 +1,65 @@ +addRule('$id', [ + 'type' => self::TYPE_STRING, + 'description' => 'Index ID.', + 'default' => '', + 'example' => '', + ]) + ->addRule('type', [ + 'type' => self::TYPE_STRING, + 'description' => 'Index type.', + 'default' => '', + 'example' => '', + ]) + ->addRule('attributes', [ + 'type' => self::TYPE_JSON, + 'description' => 'Index attributes.', + 'default' => [], + 'example' => [], + ]) + ->addRule('lengths', [ + 'type' => self::TYPE_JSON, + 'description' => 'Index lengths.', + 'default' => [], + 'example' => [], + ]) + ->addRule('orders', [ + 'type' => self::TYPE_JSON, + 'description' => 'Index orders.', + 'default' => [], + 'example' => [], + ]) + ; + } + + /** + * Get Name + * + * @return string + */ + public function getName():string + { + return 'Index'; + } + + /** + * Get Collection + * + * @return string + */ + public function getType():string + { + return Response::MODEL_INDEX; + } +} \ No newline at end of file