Use request setters
This commit is contained in:
parent
5debe2c13c
commit
597885028a
3 changed files with 66 additions and 56 deletions
|
@ -43,7 +43,7 @@
|
|||
"ext-sockets": "*",
|
||||
"appwrite/php-clamav": "1.1.*",
|
||||
"appwrite/php-runtimes": "0.11.*",
|
||||
"utopia-php/framework": "0.21.*",
|
||||
"utopia-php/framework": "dev-feat-allow-mutations as 0.22.1",
|
||||
"utopia-php/logger": "0.3.*",
|
||||
"utopia-php/abuse": "0.13.*",
|
||||
"utopia-php/analytics": "0.2.*",
|
||||
|
@ -56,7 +56,7 @@
|
|||
"utopia-php/registry": "0.6.*",
|
||||
"utopia-php/preloader": "0.2.*",
|
||||
"utopia-php/domains": "1.1.*",
|
||||
"utopia-php/swoole": "0.3.*",
|
||||
"utopia-php/swoole": "dev-feat-allow-mutations as 0.3.0",
|
||||
"utopia-php/storage": "0.11.*",
|
||||
"utopia-php/websocket": "0.1.0",
|
||||
"utopia-php/image": "0.5.*",
|
||||
|
|
52
composer.lock
generated
52
composer.lock
generated
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "69eba53723d6196f86161494e8cc7546",
|
||||
"content-hash": "066292e3062dbbc4c8d633ff11f70c65",
|
||||
"packages": [
|
||||
{
|
||||
"name": "adhocore/jwt",
|
||||
|
@ -2178,24 +2178,24 @@
|
|||
},
|
||||
{
|
||||
"name": "utopia-php/framework",
|
||||
"version": "0.21.1",
|
||||
"version": "dev-feat-allow-mutations",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/utopia-php/framework.git",
|
||||
"reference": "c81789b87a917da2daf336738170ebe01f50ea18"
|
||||
"reference": "bf561c125647dcee8d6b3a5b3934c7ece91f326e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/utopia-php/framework/zipball/c81789b87a917da2daf336738170ebe01f50ea18",
|
||||
"reference": "c81789b87a917da2daf336738170ebe01f50ea18",
|
||||
"url": "https://api.github.com/repos/utopia-php/framework/zipball/bf561c125647dcee8d6b3a5b3934c7ece91f326e",
|
||||
"reference": "bf561c125647dcee8d6b3a5b3934c7ece91f326e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.0.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^9.5.10",
|
||||
"vimeo/psalm": "4.13.1"
|
||||
"phpunit/phpunit": "^9.5.25",
|
||||
"vimeo/psalm": "^4.27.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
|
@ -2221,9 +2221,9 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/utopia-php/framework/issues",
|
||||
"source": "https://github.com/utopia-php/framework/tree/0.21.1"
|
||||
"source": "https://github.com/utopia-php/framework/tree/feat-allow-mutations"
|
||||
},
|
||||
"time": "2022-09-07T09:56:28+00:00"
|
||||
"time": "2022-10-12T02:02:55+00:00"
|
||||
},
|
||||
{
|
||||
"name": "utopia-php/image",
|
||||
|
@ -2611,22 +2611,22 @@
|
|||
},
|
||||
{
|
||||
"name": "utopia-php/swoole",
|
||||
"version": "0.3.3",
|
||||
"version": "dev-feat-allow-mutations",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/utopia-php/swoole.git",
|
||||
"reference": "8312df69233b5dcd3992de88f131f238002749de"
|
||||
"reference": "2c9e77696a4e40003a767c7d65cd5b2573f8b745"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/utopia-php/swoole/zipball/8312df69233b5dcd3992de88f131f238002749de",
|
||||
"reference": "8312df69233b5dcd3992de88f131f238002749de",
|
||||
"url": "https://api.github.com/repos/utopia-php/swoole/zipball/2c9e77696a4e40003a767c7d65cd5b2573f8b745",
|
||||
"reference": "2c9e77696a4e40003a767c7d65cd5b2573f8b745",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-swoole": "*",
|
||||
"php": ">=8.0",
|
||||
"utopia-php/framework": "0.*.*"
|
||||
"utopia-php/framework": "dev-feat-allow-mutations"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^9.3",
|
||||
|
@ -2661,9 +2661,9 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/utopia-php/swoole/issues",
|
||||
"source": "https://github.com/utopia-php/swoole/tree/0.3.3"
|
||||
"source": "https://github.com/utopia-php/swoole/tree/feat-allow-mutations"
|
||||
},
|
||||
"time": "2022-01-20T09:58:43+00:00"
|
||||
"time": "2022-10-12T03:11:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "utopia-php/system",
|
||||
|
@ -5424,9 +5424,25 @@
|
|||
"time": "2022-09-28T08:42:51+00:00"
|
||||
}
|
||||
],
|
||||
"aliases": [],
|
||||
"aliases": [
|
||||
{
|
||||
"package": "utopia-php/framework",
|
||||
"version": "dev-feat-allow-mutations",
|
||||
"alias": "0.22.1",
|
||||
"alias_normalized": "0.22.1.0"
|
||||
},
|
||||
{
|
||||
"package": "utopia-php/swoole",
|
||||
"version": "dev-feat-allow-mutations",
|
||||
"alias": "0.3.0",
|
||||
"alias_normalized": "0.3.0.0"
|
||||
}
|
||||
],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": [],
|
||||
"stability-flags": {
|
||||
"utopia-php/framework": 20,
|
||||
"utopia-php/swoole": 20
|
||||
},
|
||||
"prefer-stable": false,
|
||||
"prefer-lowest": false,
|
||||
"platform": {
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace Appwrite\GraphQL;
|
||||
|
||||
use Appwrite\GraphQL\Exception as GQLException;
|
||||
use Appwrite\Promises\Swoole;
|
||||
use Appwrite\Utopia\Request;
|
||||
use Appwrite\Utopia\Response;
|
||||
|
@ -26,10 +27,13 @@ class Resolvers
|
|||
): callable {
|
||||
return static fn($type, $args, $context, $info) => new Swoole(
|
||||
function (callable $resolve, callable $reject) use ($utopia, $route, $args, $context, $info) {
|
||||
/** @var App $utopia */
|
||||
/** @var Response $response */
|
||||
/** @var Request $request */
|
||||
|
||||
$utopia = $utopia->getResource('utopia:graphql', true);
|
||||
$request = $utopia->getResource('request', true);
|
||||
$response = $utopia->getResource('response', true);
|
||||
$swoole = $request->getSwoole();
|
||||
|
||||
$path = $route->getPath();
|
||||
foreach ($args as $key => $value) {
|
||||
|
@ -38,16 +42,15 @@ class Resolvers
|
|||
}
|
||||
}
|
||||
|
||||
$swoole->server['request_method'] = $route->getMethod();
|
||||
$swoole->server['request_uri'] = $path;
|
||||
$swoole->server['path_info'] = $path;
|
||||
$request->setMethod($route->getMethod());
|
||||
$request->setURI($path);
|
||||
|
||||
switch ($route->getMethod()) {
|
||||
case 'GET':
|
||||
$swoole->get = $args;
|
||||
$request->setGet($args);
|
||||
break;
|
||||
default:
|
||||
$swoole->post = $args;
|
||||
$request->setPost($args);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -101,11 +104,9 @@ class Resolvers
|
|||
$utopia = $utopia->getResource('utopia:graphql', true);
|
||||
$request = $utopia->getResource('request', true);
|
||||
$response = $utopia->getResource('response', true);
|
||||
$swoole = $request->getSwoole();
|
||||
|
||||
$swoole->server['request_method'] = 'GET';
|
||||
$swoole->server['request_uri'] = "/v1/databases/$databaseId/collections/$collectionId/documents/{$args['id']}";
|
||||
$swoole->server['path_info'] = "/v1/databases/$databaseId/collections/$collectionId/documents/{$args['id']}";
|
||||
$request->setMethod('GET');
|
||||
$request->setURI("/database/collections/{$collectionId}/documents/{$args['documentId']}");
|
||||
|
||||
self::resolve($utopia, $request, $response, $resolve, $reject);
|
||||
}
|
||||
|
@ -132,15 +133,12 @@ class Resolvers
|
|||
$utopia = $utopia->getResource('utopia:graphql', true);
|
||||
$request = $utopia->getResource('request', true);
|
||||
$response = $utopia->getResource('response', true);
|
||||
$swoole = $request->getSwoole();
|
||||
$swoole->post = [
|
||||
'databaseId' => $databaseId,
|
||||
'collectionId' => $collectionId,
|
||||
|
||||
$request->setMethod('GET');
|
||||
$request->setURI("/database/collections/{$collectionId}/documents");
|
||||
$request->setGet([
|
||||
'queries' => $args['queries'],
|
||||
];
|
||||
$swoole->server['request_method'] = 'GET';
|
||||
$swoole->server['request_uri'] = "/v1/databases/$databaseId/collections/$collectionId/documents";
|
||||
$swoole->server['path_info'] = "/v1/databases/$databaseId/collections/$collectionId/documents";
|
||||
]);
|
||||
|
||||
$beforeResolve = function ($payload) {
|
||||
return $payload['documents'];
|
||||
|
@ -171,7 +169,6 @@ class Resolvers
|
|||
$utopia = $utopia->getResource('utopia:graphql', true);
|
||||
$request = $utopia->getResource('request', true);
|
||||
$response = $utopia->getResource('response', true);
|
||||
$swoole = $request->getSwoole();
|
||||
|
||||
$id = $args['id'] ?? ID::unique();
|
||||
$permissions = $args['permissions'] ?? null;
|
||||
|
@ -179,17 +176,17 @@ class Resolvers
|
|||
unset($args['id']);
|
||||
unset($args['permissions']);
|
||||
|
||||
$request->setMethod('POST');
|
||||
$request->setURI("/v1/databases/$databaseId/collections/$collectionId/documents");
|
||||
|
||||
// Order must be the same as the route params
|
||||
$swoole->post = [
|
||||
$request->setPost([
|
||||
'databaseId' => $databaseId,
|
||||
'documentId' => $id,
|
||||
'collectionId' => $collectionId,
|
||||
'data' => $args,
|
||||
'permissions' => $permissions,
|
||||
];
|
||||
$swoole->server['request_method'] = 'POST';
|
||||
$swoole->server['request_uri'] = "/v1/databases/$databaseId/collections/$collectionId/documents";
|
||||
$swoole->server['path_info'] = "/v1/databases/$databaseId/collections/$collectionId/documents";
|
||||
]);
|
||||
|
||||
self::resolve($utopia, $request, $response, $resolve, $reject);
|
||||
}
|
||||
|
@ -216,7 +213,6 @@ class Resolvers
|
|||
$utopia = $utopia->getResource('utopia:graphql', true);
|
||||
$request = $utopia->getResource('request', true);
|
||||
$response = $utopia->getResource('response', true);
|
||||
$swoole = $request->getSwoole();
|
||||
|
||||
$documentId = $args['id'];
|
||||
$permissions = $args['permissions'] ?? null;
|
||||
|
@ -224,17 +220,17 @@ class Resolvers
|
|||
unset($args['id']);
|
||||
unset($args['permissions']);
|
||||
|
||||
$request->setMethod('PATCH');
|
||||
$request->setURI("/v1/databases/$databaseId/collections/$collectionId/documents/$documentId");
|
||||
|
||||
// Order must be the same as the route params
|
||||
$swoole->post = [
|
||||
$request->setPost([
|
||||
'databaseId' => $databaseId,
|
||||
'collectionId' => $collectionId,
|
||||
'documentId' => $documentId,
|
||||
'data' => $args,
|
||||
'permissions' => $permissions,
|
||||
];
|
||||
$swoole->server['request_method'] = 'PATCH';
|
||||
$swoole->server['request_uri'] = "/v1/databases/$databaseId/collections/$collectionId/documents/$documentId";
|
||||
$swoole->server['path_info'] = "/v1/databases/$databaseId/collections/$collectionId/documents/$documentId";
|
||||
]);
|
||||
|
||||
self::resolve($utopia, $request, $response, $resolve, $reject);
|
||||
}
|
||||
|
@ -261,13 +257,11 @@ class Resolvers
|
|||
$utopia = $utopia->getResource('utopia:graphql', true);
|
||||
$request = $utopia->getResource('request', true);
|
||||
$response = $utopia->getResource('response', true);
|
||||
$swoole = $request->getSwoole();
|
||||
|
||||
$documentId = $args['id'];
|
||||
|
||||
$swoole->server['request_method'] = 'DELETE';
|
||||
$swoole->server['request_uri'] = "/v1/databases/$databaseId/collections/$collectionId/documents/$documentId";
|
||||
$swoole->server['path_info'] = "/v1/databases/$databaseId/collections/$collectionId/documents/$documentId";
|
||||
$request->setMethod('DELETE');
|
||||
$request->setURI("/v1/databases/$databaseId/collections/$collectionId/documents/$documentId");
|
||||
|
||||
self::resolve($utopia, $request, $response, $resolve, $reject);
|
||||
}
|
||||
|
@ -296,10 +290,10 @@ class Resolvers
|
|||
): void {
|
||||
// Drop json content type so post args are used directly
|
||||
if ($request->getHeader('content-type') === 'application/json') {
|
||||
unset($request->getSwoole()->header['content-type']);
|
||||
$request->removeHeader('content-type');
|
||||
}
|
||||
|
||||
$request = new Request($request->getSwoole());
|
||||
$request = $request->clone();
|
||||
$utopia->setResource('request', static fn() => $request);
|
||||
$response->setContentType(Response::CONTENT_TYPE_NULL);
|
||||
|
||||
|
|
Loading…
Reference in a new issue