Add spec generation changes for OpenAPI as well
This commit is contained in:
parent
0e8e455903
commit
d0cccf72ea
1 changed files with 26 additions and 24 deletions
|
@ -8,7 +8,10 @@ use Appwrite\Utopia\Response\Model;
|
||||||
use Utopia\Database\Helpers\Permission;
|
use Utopia\Database\Helpers\Permission;
|
||||||
use Utopia\Database\Helpers\Role;
|
use Utopia\Database\Helpers\Role;
|
||||||
use Utopia\Validator;
|
use Utopia\Validator;
|
||||||
|
use Utopia\Validator\ArrayList;
|
||||||
use Utopia\Validator\Nullable;
|
use Utopia\Validator\Nullable;
|
||||||
|
use Utopia\Validator\Range;
|
||||||
|
use Utopia\Validator\WhiteList;
|
||||||
|
|
||||||
class OpenAPI3 extends Format
|
class OpenAPI3 extends Format
|
||||||
{
|
{
|
||||||
|
@ -288,12 +291,6 @@ class OpenAPI3 extends Format
|
||||||
'required' => !$param['optional'],
|
'required' => !$param['optional'],
|
||||||
];
|
];
|
||||||
|
|
||||||
foreach ($this->services as $service) {
|
|
||||||
if ($route->getLabel('sdk.namespace', 'default') === $service['name'] && in_array($name, $service['x-globalAttributes'] ?? [])) {
|
|
||||||
$node['x-global'] = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$isNullable = $validator instanceof Nullable;
|
$isNullable = $validator instanceof Nullable;
|
||||||
|
|
||||||
if ($isNullable) {
|
if ($isNullable) {
|
||||||
|
@ -302,6 +299,7 @@ class OpenAPI3 extends Format
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ((!empty($validator)) ? \get_class($validator) : '') {
|
switch ((!empty($validator)) ? \get_class($validator) : '') {
|
||||||
|
case 'Utopia\Database\Validator\UID':
|
||||||
case 'Utopia\Validator\Text':
|
case 'Utopia\Validator\Text':
|
||||||
$node['schema']['type'] = $validator->getType();
|
$node['schema']['type'] = $validator->getType();
|
||||||
$node['schema']['x-example'] = '[' . \strtoupper(Template::fromCamelCaseToSnake($node['name'])) . ']';
|
$node['schema']['x-example'] = '[' . \strtoupper(Template::fromCamelCaseToSnake($node['name'])) . ']';
|
||||||
|
@ -310,10 +308,6 @@ class OpenAPI3 extends Format
|
||||||
$node['schema']['type'] = $validator->getType();
|
$node['schema']['type'] = $validator->getType();
|
||||||
$node['schema']['x-example'] = false;
|
$node['schema']['x-example'] = false;
|
||||||
break;
|
break;
|
||||||
case 'Utopia\Database\Validator\UID':
|
|
||||||
$node['schema']['type'] = $validator->getType();
|
|
||||||
$node['schema']['x-example'] = '[' . \strtoupper(Template::fromCamelCaseToSnake($node['name'])) . ']';
|
|
||||||
break;
|
|
||||||
case 'Appwrite\Utopia\Database\Validator\CustomId':
|
case 'Appwrite\Utopia\Database\Validator\CustomId':
|
||||||
if ($route->getLabel('sdk.methodType', '') === 'upload') {
|
if ($route->getLabel('sdk.methodType', '') === 'upload') {
|
||||||
$node['schema']['x-upload-id'] = true;
|
$node['schema']['x-upload-id'] = true;
|
||||||
|
@ -331,6 +325,7 @@ class OpenAPI3 extends Format
|
||||||
$node['schema']['format'] = 'email';
|
$node['schema']['format'] = 'email';
|
||||||
$node['schema']['x-example'] = 'email@example.com';
|
$node['schema']['x-example'] = 'email@example.com';
|
||||||
break;
|
break;
|
||||||
|
case 'Utopia\Validator\Host':
|
||||||
case 'Utopia\Validator\URL':
|
case 'Utopia\Validator\URL':
|
||||||
$node['schema']['type'] = $validator->getType();
|
$node['schema']['type'] = $validator->getType();
|
||||||
$node['schema']['format'] = 'url';
|
$node['schema']['format'] = 'url';
|
||||||
|
@ -342,7 +337,6 @@ class OpenAPI3 extends Format
|
||||||
$param['default'] = (empty($param['default'])) ? new \stdClass() : $param['default'];
|
$param['default'] = (empty($param['default'])) ? new \stdClass() : $param['default'];
|
||||||
$node['schema']['type'] = 'object';
|
$node['schema']['type'] = 'object';
|
||||||
$node['schema']['x-example'] = '{}';
|
$node['schema']['x-example'] = '{}';
|
||||||
//$node['schema']['format'] = 'json';
|
|
||||||
break;
|
break;
|
||||||
case 'Utopia\Storage\Validator\File':
|
case 'Utopia\Storage\Validator\File':
|
||||||
$consumes = ['multipart/form-data'];
|
$consumes = ['multipart/form-data'];
|
||||||
|
@ -350,25 +344,38 @@ class OpenAPI3 extends Format
|
||||||
$node['schema']['format'] = 'binary';
|
$node['schema']['format'] = 'binary';
|
||||||
break;
|
break;
|
||||||
case 'Utopia\Validator\ArrayList':
|
case 'Utopia\Validator\ArrayList':
|
||||||
|
/** @var ArrayList $validator */
|
||||||
|
$node['schema']['type'] = 'array';
|
||||||
|
$node['schema']['items'] = [
|
||||||
|
'type' => $validator->getValidator()->getType(),
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case 'Appwrite\Utopia\Database\Validator\Queries\Attributes':
|
||||||
case 'Appwrite\Utopia\Database\Validator\Queries\Buckets':
|
case 'Appwrite\Utopia\Database\Validator\Queries\Buckets':
|
||||||
case 'Appwrite\Utopia\Database\Validator\Queries\Collections':
|
case 'Appwrite\Utopia\Database\Validator\Queries\Collections':
|
||||||
case 'Appwrite\Utopia\Database\Validator\Queries\Indexes':
|
|
||||||
case 'Appwrite\Utopia\Database\Validator\Queries\Attributes':
|
|
||||||
case 'Appwrite\Utopia\Database\Validator\Queries\Databases':
|
case 'Appwrite\Utopia\Database\Validator\Queries\Databases':
|
||||||
case 'Appwrite\Utopia\Database\Validator\Queries\Deployments':
|
case 'Appwrite\Utopia\Database\Validator\Queries\Deployments':
|
||||||
case 'Appwrite\Utopia\Database\Validator\Queries\Installations':
|
|
||||||
case 'Appwrite\Utopia\Database\Validator\Queries\Documents':
|
|
||||||
case 'Utopia\Database\Validator\Queries\Documents':
|
|
||||||
case 'Appwrite\Utopia\Database\Validator\Queries\Executions':
|
case 'Appwrite\Utopia\Database\Validator\Queries\Executions':
|
||||||
case 'Appwrite\Utopia\Database\Validator\Queries\Files':
|
case 'Appwrite\Utopia\Database\Validator\Queries\Files':
|
||||||
case 'Appwrite\Utopia\Database\Validator\Queries\Functions':
|
case 'Appwrite\Utopia\Database\Validator\Queries\Functions':
|
||||||
case 'Appwrite\Utopia\Database\Validator\Queries\Rules':
|
case 'Appwrite\Utopia\Database\Validator\Queries\Identities':
|
||||||
|
case 'Appwrite\Utopia\Database\Validator\Queries\Indexes':
|
||||||
|
case 'Appwrite\Utopia\Database\Validator\Queries\Installations':
|
||||||
case 'Appwrite\Utopia\Database\Validator\Queries\Memberships':
|
case 'Appwrite\Utopia\Database\Validator\Queries\Memberships':
|
||||||
|
case 'Appwrite\Utopia\Database\Validator\Queries\Messages':
|
||||||
|
case 'Appwrite\Utopia\Database\Validator\Queries\Migrations':
|
||||||
case 'Appwrite\Utopia\Database\Validator\Queries\Projects':
|
case 'Appwrite\Utopia\Database\Validator\Queries\Projects':
|
||||||
|
case 'Appwrite\Utopia\Database\Validator\Queries\Providers':
|
||||||
|
case 'Appwrite\Utopia\Database\Validator\Queries\Rules':
|
||||||
|
case 'Appwrite\Utopia\Database\Validator\Queries\Subscribers':
|
||||||
|
case 'Appwrite\Utopia\Database\Validator\Queries\Targets':
|
||||||
case 'Appwrite\Utopia\Database\Validator\Queries\Teams':
|
case 'Appwrite\Utopia\Database\Validator\Queries\Teams':
|
||||||
|
case 'Appwrite\Utopia\Database\Validator\Queries\Topics':
|
||||||
case 'Appwrite\Utopia\Database\Validator\Queries\Users':
|
case 'Appwrite\Utopia\Database\Validator\Queries\Users':
|
||||||
case 'Appwrite\Utopia\Database\Validator\Queries\Variables':
|
case 'Appwrite\Utopia\Database\Validator\Queries\Variables':
|
||||||
case 'Utopia\Database\Validator\Queries':
|
case 'Utopia\Database\Validator\Queries':
|
||||||
|
case 'Utopia\Database\Validator\Queries\Document':
|
||||||
|
case 'Utopia\Database\Validator\Queries\Documents':
|
||||||
$node['schema']['type'] = 'array';
|
$node['schema']['type'] = 'array';
|
||||||
$node['schema']['items'] = [
|
$node['schema']['items'] = [
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
|
@ -399,7 +406,7 @@ class OpenAPI3 extends Format
|
||||||
$node['schema']['x-example'] = '+12065550100'; // In the US, 555 is reserved like example.com
|
$node['schema']['x-example'] = '+12065550100'; // In the US, 555 is reserved like example.com
|
||||||
break;
|
break;
|
||||||
case 'Utopia\Validator\Range':
|
case 'Utopia\Validator\Range':
|
||||||
/** @var \Utopia\Validator\Range $validator */
|
/** @var Range $validator */
|
||||||
$node['schema']['type'] = $validator->getType() === Validator::TYPE_FLOAT ? 'number' : $validator->getType();
|
$node['schema']['type'] = $validator->getType() === Validator::TYPE_FLOAT ? 'number' : $validator->getType();
|
||||||
$node['schema']['format'] = $validator->getType() == Validator::TYPE_INTEGER ? 'int32' : 'float';
|
$node['schema']['format'] = $validator->getType() == Validator::TYPE_INTEGER ? 'int32' : 'float';
|
||||||
$node['schema']['x-example'] = $validator->getMin();
|
$node['schema']['x-example'] = $validator->getMin();
|
||||||
|
@ -416,13 +423,8 @@ class OpenAPI3 extends Format
|
||||||
case 'Utopia\Validator\Length':
|
case 'Utopia\Validator\Length':
|
||||||
$node['schema']['type'] = $validator->getType();
|
$node['schema']['type'] = $validator->getType();
|
||||||
break;
|
break;
|
||||||
case 'Utopia\Validator\Host':
|
|
||||||
$node['schema']['type'] = $validator->getType();
|
|
||||||
$node['schema']['format'] = 'url';
|
|
||||||
$node['schema']['x-example'] = 'https://example.com';
|
|
||||||
break;
|
|
||||||
case 'Utopia\Validator\WhiteList':
|
case 'Utopia\Validator\WhiteList':
|
||||||
/** @var \Utopia\Validator\WhiteList $validator */
|
/** @var WhiteList $validator */
|
||||||
$node['schema']['type'] = $validator->getType();
|
$node['schema']['type'] = $validator->getType();
|
||||||
$node['schema']['x-example'] = $validator->getList()[0];
|
$node['schema']['x-example'] = $validator->getList()[0];
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue