diff --git a/src/Appwrite/Utopia/Response.php b/src/Appwrite/Utopia/Response.php index c362df0251..3795778261 100644 --- a/src/Appwrite/Utopia/Response.php +++ b/src/Appwrite/Utopia/Response.php @@ -8,6 +8,7 @@ use Swoole\Http\Response as SwooleHTTPResponse; use Appwrite\Database\Document; use Appwrite\Utopia\Response\Model; use Appwrite\Utopia\Response\Model\BaseList; +use Appwrite\Utopia\Response\Model\Collection; use Appwrite\Utopia\Response\Model\Continent; use Appwrite\Utopia\Response\Model\Country; use Appwrite\Utopia\Response\Model\Currency; @@ -27,6 +28,7 @@ use Appwrite\Utopia\Response\Model\Log; use Appwrite\Utopia\Response\Model\Membership; use Appwrite\Utopia\Response\Model\Phone; use Appwrite\Utopia\Response\Model\Platform; +use Appwrite\Utopia\Response\Model\Rule; use Appwrite\Utopia\Response\Model\Tag; use Appwrite\Utopia\Response\Model\Task; use Appwrite\Utopia\Response\Model\Webhook; @@ -41,33 +43,35 @@ class Response extends SwooleResponse const MODEL_BASE_LIST = 'baseList'; const MODEL_PERMISSIONS = 'permissions'; + // Database + const MODEL_COLLECTION = 'collection'; + const MODEL_COLLECTION_LIST = 'collectionList'; + const MODEL_RULE = 'rule'; + // Users const MODEL_USER = 'user'; const MODEL_USER_LIST = 'userList'; const MODEL_SESSION = 'session'; const MODEL_SESSION_LIST = 'sessionList'; const MODEL_TOKEN = 'token'; // - Missing - - // Database - const MODEL_COLLECTION = 'collection'; // - Missing + // Storage + const MODEL_FILE = 'file'; + const MODEL_FILE_LIST = 'fileList'; + const MODEL_BUCKET = 'bucket'; // - Missing + // Locale const MODEL_LOCALE = 'locale'; const MODEL_COUNTRY = 'country'; const MODEL_COUNTRY_LIST = 'countryList'; const MODEL_CONTINENT = 'continent'; const MODEL_CONTINENT_LIST = 'continentList'; - const MODEL_CURRENCY = 'currency'; // - Missing - const MODEL_CURRENCY_LIST = 'currencyList'; // - Missing - const MODEL_LANGUAGE = 'langauge'; // - Missing - const MODEL_LANGUAGE_LIST = 'langaugeList'; // - Missing - const MODEL_PHONE = 'phone'; // - Missing - const MODEL_PHONE_LIST = 'phoneList'; // - Missing - - // Storage - const MODEL_FILE = 'file'; - const MODEL_FILE_LIST = 'fileList'; - const MODEL_BUCKET = 'bucket'; // - Missing + const MODEL_CURRENCY = 'currency'; + const MODEL_CURRENCY_LIST = 'currencyList'; + const MODEL_LANGUAGE = 'langauge'; + const MODEL_LANGUAGE_LIST = 'langaugeList'; + const MODEL_PHONE = 'phone'; + const MODEL_PHONE_LIST = 'phoneList'; // Teams const MODEL_TEAM = 'team'; @@ -107,6 +111,7 @@ class Response extends SwooleResponse ->setModel(new Error()) ->setModel(new ErrorDev()) // Lists + ->setModel(new BaseList('Collections List', self::MODEL_COLLECTION_LIST, 'users', self::MODEL_COLLECTION)) ->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)) ->setModel(new BaseList('Logs List', self::MODEL_LOG_LIST, 'logs', self::MODEL_LOG, false)) @@ -128,6 +133,8 @@ class Response extends SwooleResponse ->setModel(new BaseList('Currencies List', self::MODEL_CURRENCY_LIST, 'currencies', self::MODEL_CURRENCY)) ->setModel(new BaseList('Phones List', self::MODEL_PHONE_LIST, 'phones', self::MODEL_PHONE)) // Entities + ->setModel(new Collection()) + ->setModel(new Rule()) ->setModel(new Log()) ->setModel(new User()) ->setModel(new Session()) @@ -148,8 +155,6 @@ class Response extends SwooleResponse ->setModel(new Language()) ->setModel(new Currency()) ->setModel(new Phone()) - // Currency - // Phone // Verification // Recovery ; diff --git a/src/Appwrite/Utopia/Response/Model/Collection.php b/src/Appwrite/Utopia/Response/Model/Collection.php new file mode 100644 index 0000000000..d093bc407d --- /dev/null +++ b/src/Appwrite/Utopia/Response/Model/Collection.php @@ -0,0 +1,67 @@ +addRule('$id', [ + 'type' => 'string', + 'description' => 'Collection ID.', + 'example' => '5e5ea5c16897e', + ]) + ->addRule('$permissions', [ + 'type' => Response::MODEL_PERMISSIONS, + 'description' => 'Collection permissions.', + 'example' => new \stdClass, + 'array' => false, + ]) + ->addRule('name', [ + 'type' => 'string', + 'description' => 'Collection name.', + 'example' => 'Movies', + ]) + ->addRule('dateCreated', [ + 'type' => 'integer', + 'description' => 'Collection creation date in Unix timestamp.', + 'example' => 1592981250, + ]) + ->addRule('dateUpdated', [ + 'type' => 'integer', + 'description' => 'Collection creation date in Unix timestamp.', + 'example' => 1592981550, + ]) + ->addRule('rules', [ + 'type' => Response::MODEL_RULE, + 'description' => 'Collection rules.', + 'example' => [], + 'array' => true, + ]) + ; + } + + /** + * Get Name + * + * @return string + */ + public function getName():string + { + return 'Collection'; + } + + /** + * Get Collection + * + * @return string + */ + public function getType():string + { + return Response::MODEL_COLLECTION; + } +} \ No newline at end of file diff --git a/src/Appwrite/Utopia/Response/Model/Rule.php b/src/Appwrite/Utopia/Response/Model/Rule.php new file mode 100644 index 0000000000..d170348353 --- /dev/null +++ b/src/Appwrite/Utopia/Response/Model/Rule.php @@ -0,0 +1,70 @@ +addRule('$id', [ + 'type' => 'string', + 'description' => 'Rule ID.', + 'example' => '5e5ea5c16897e', + ]) + ->addRule('type', [ + 'type' => 'string', + 'description' => 'Rule type. Possible values: ', + 'example' => 'title', + ]) + ->addRule('key', [ + 'type' => 'string', + 'description' => 'Rule key.', + 'example' => 'title', + ]) + ->addRule('label', [ + 'type' => 'string', + 'description' => 'Rule label.', + 'example' => 'Title', + ]) + ->addRule('default', [ // TODO should be of mixed types + 'type' => 'string', + 'description' => 'Rule default value.', + 'example' => 'Movie Name', + ]) + ->addRule('array', [ + 'type' => 'boolean', + 'description' => 'Is array?', + 'example' => false, + ]) + ->addRule('required', [ + 'type' => 'boolean', + 'description' => 'Is required?', + 'example' => true, + ]) + ; + } + + /** + * Get Name + * + * @return string + */ + public function getName():string + { + return 'Rule'; + } + + /** + * Get Collection + * + * @return string + */ + public function getType():string + { + return Response::MODEL_RULE; + } +} \ No newline at end of file