Begin work on SDKResponse refactor

This commit is contained in:
Bradley Schofield 2024-12-20 12:06:09 +09:00
parent 64a957859e
commit 624c91816b
12 changed files with 131 additions and 33 deletions

View file

@ -4576,7 +4576,9 @@
"documentId",
"data"
],
"responseModel": "document"
"responses": [
"#\/components\/schemas\/document"
]
},
{
"name": "createDocuments",
@ -4586,7 +4588,9 @@
"required": [
"documents"
],
"responseModel": "documentList"
"responses": [
"#\/components\/schemas\/documentList"
]
}
],
"auth": {

View file

@ -8145,7 +8145,9 @@
"documentId",
"data"
],
"responseModel": "document"
"responses": [
"#\/components\/schemas\/document"
]
},
{
"name": "createDocuments",
@ -8155,7 +8157,9 @@
"required": [
"documents"
],
"responseModel": "documentList"
"responses": [
"#\/components\/schemas\/documentList"
]
}
],
"auth": {

View file

@ -7679,7 +7679,9 @@
"documentId",
"data"
],
"responseModel": "document"
"responses": [
"#\/components\/schemas\/document"
]
},
{
"name": "createDocuments",
@ -7689,7 +7691,9 @@
"required": [
"documents"
],
"responseModel": "documentList"
"responses": [
"#\/components\/schemas\/documentList"
]
}
],
"auth": {

View file

@ -4764,7 +4764,9 @@
"documentId",
"data"
],
"responseModel": "document"
"responses": [
"#\/definitions\/document"
]
},
{
"name": "createDocuments",
@ -4774,7 +4776,9 @@
"required": [
"documents"
],
"responseModel": "documentList"
"responses": [
"#\/definitions\/documentList"
]
}
],
"auth": {

View file

@ -8348,7 +8348,9 @@
"documentId",
"data"
],
"responseModel": "document"
"responses": [
"#\/definitions\/document"
]
},
{
"name": "createDocuments",
@ -8358,7 +8360,9 @@
"required": [
"documents"
],
"responseModel": "documentList"
"responses": [
"#\/definitions\/documentList"
]
}
],
"auth": {

View file

@ -7860,7 +7860,9 @@
"documentId",
"data"
],
"responseModel": "document"
"responses": [
"#\/definitions\/document"
]
},
{
"name": "createDocuments",
@ -7870,7 +7872,9 @@
"required": [
"documents"
],
"responseModel": "documentList"
"responses": [
"#\/definitions\/documentList"
]
}
],
"auth": {

View file

@ -5,6 +5,7 @@ use Appwrite\Event\Event;
use Appwrite\Extend\Exception;
use Appwrite\SDK\AuthType;
use Appwrite\SDK\Method;
use Appwrite\SDK\Response as SDKResponse;
use Appwrite\SDK\ResponseType;
use Appwrite\Utopia\Response;
use Utopia\App;
@ -34,8 +35,12 @@ App::get('/v1/health')
name: 'get',
auth: [AuthType::KEY],
description: '/docs/references/health/get.md',
responseCode: Response::STATUS_CODE_OK,
responseModel: Response::MODEL_HEALTH_STATUS,
responses: [
new SDKResponse(
code: Response::STATUS_CODE_OK,
model: Response::MODEL_HEALTH_STATUS,
)
],
responseType: ResponseType::JSON
))
->inject('response')
@ -68,8 +73,12 @@ App::get('/v1/health/db')
namespace: 'health',
name: 'getDB',
description: '/docs/references/health/get-db.md',
responseCode: Response::STATUS_CODE_OK,
responseModel: Response::MODEL_HEALTH_STATUS,
responses: [
new SDKResponse(
code: Response::STATUS_CODE_OK,
model: Response::MODEL_HEALTH_STATUS,
)
],
responseType: ResponseType::JSON
))
->inject('response')
@ -124,8 +133,12 @@ App::get('/v1/health/cache')
namespace: 'health',
name: 'getCache',
description: '/docs/references/health/get-cache.md',
responseCode: Response::STATUS_CODE_OK,
responseModel: Response::MODEL_HEALTH_STATUS,
responses: [
new SDKResponse(
code: Response::STATUS_CODE_OK,
model: Response::MODEL_HEALTH_STATUS,
)
],
responseType: ResponseType::JSON
))
->inject('response')

View file

@ -49,8 +49,9 @@ class Method
* @param string $name
* @param string $description
* @param array<AuthType> $auth
* @param array<Response> $responses
* @param int $responseCode
* @param string|array $responseModel
* @param string|array<string> $responseModel
* @param ResponseType $responseType
* @param MethodType|null $methodType
* @param string|null $offlineKey
@ -69,8 +70,7 @@ class Method
protected string $name,
protected string $description,
protected array $auth,
protected int $responseCode,
protected string|array $responseModel,
protected array $responses,
protected ResponseType $responseType = ResponseType::JSON,
protected ?MethodType $methodType = null,
protected ?string $offlineKey = null,

View file

@ -2,9 +2,7 @@
namespace Appwrite\SDK;
use JsonSerializable;
class Multiplex implements JsonSerializable
class Multiplex
{
/**
* @param string $name
@ -20,13 +18,23 @@ class Multiplex implements JsonSerializable
) {
}
public function jsonSerialize(): array
public function getName(): string
{
return [
'name' => $this->name,
'parameters' => $this->parameters,
'required' => $this->required,
'responseModel' => $this->responseModel,
];
return $this->name;
}
public function getParameters(): array
{
return $this->parameters;
}
public function getRequired(): array
{
return $this->required;
}
public function getResponseModel(): string
{
return $this->responseModel;
}
}

View file

@ -0,0 +1,33 @@
<?php
namespace Appwrite\SDK;
class Response
{
/**
* @param int $code
* @param string $model
* @param string $description
*/
function __construct(
private int $code,
private string $model,
private string $description = '',
)
{}
public function getCode(): int
{
return $this->code;
}
public function getModel(): string
{
return $this->model;
}
public function getDescription(): string
{
return $this->description;
}
}

View file

@ -197,7 +197,17 @@ class OpenAPI3 extends Format
];
if (!empty($sdk->getMultiplex())) {
$temp['x-appwrite']['multiplex'] = $sdk->getMultiplex();
$temp['x-appwrite']['multiplex'] = [];
foreach ($sdk->getMultiplex() as $multiplex) {
/** @var \Appwrite\SDK\Multiplex $multiplex */
$temp['x-appwrite']['multiplex'][] = [
'name' => $multiplex->getName(),
'parameters' => $multiplex->getParameters(),
'required' => $multiplex->getRequired(),
'responses' => ['#/components/schemas/' . $multiplex->getResponseModel()]
];
}
}
foreach ($this->models as $value) {

View file

@ -199,7 +199,17 @@ class Swagger2 extends Format
}
if (!empty($sdk->getMultiplex())) {
$temp['x-appwrite']['multiplex'] = $sdk->getMultiplex();
$temp['x-appwrite']['multiplex'] = [];
foreach ($sdk->getMultiplex() as $multiplex) {
/** @var \Appwrite\SDK\Multiplex $multiplex */
$temp['x-appwrite']['multiplex'][] = [
'name' => $multiplex->getName(),
'parameters' => $multiplex->getParameters(),
'required' => $multiplex->getRequired(),
'responses' => ["#/definitions/" . $multiplex->getResponseModel()]
];
}
}
foreach ($this->models as $value) {