1
0
Fork 0
mirror of synced 2024-09-30 01:08:13 +13:00

Use request setters

This commit is contained in:
Jake Barnby 2022-10-12 20:55:04 +13:00
parent 5debe2c13c
commit 597885028a
No known key found for this signature in database
GPG key ID: C437A8CC85B96E9C
3 changed files with 66 additions and 56 deletions

View file

@ -43,7 +43,7 @@
"ext-sockets": "*", "ext-sockets": "*",
"appwrite/php-clamav": "1.1.*", "appwrite/php-clamav": "1.1.*",
"appwrite/php-runtimes": "0.11.*", "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/logger": "0.3.*",
"utopia-php/abuse": "0.13.*", "utopia-php/abuse": "0.13.*",
"utopia-php/analytics": "0.2.*", "utopia-php/analytics": "0.2.*",
@ -56,7 +56,7 @@
"utopia-php/registry": "0.6.*", "utopia-php/registry": "0.6.*",
"utopia-php/preloader": "0.2.*", "utopia-php/preloader": "0.2.*",
"utopia-php/domains": "1.1.*", "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/storage": "0.11.*",
"utopia-php/websocket": "0.1.0", "utopia-php/websocket": "0.1.0",
"utopia-php/image": "0.5.*", "utopia-php/image": "0.5.*",

52
composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "69eba53723d6196f86161494e8cc7546", "content-hash": "066292e3062dbbc4c8d633ff11f70c65",
"packages": [ "packages": [
{ {
"name": "adhocore/jwt", "name": "adhocore/jwt",
@ -2178,24 +2178,24 @@
}, },
{ {
"name": "utopia-php/framework", "name": "utopia-php/framework",
"version": "0.21.1", "version": "dev-feat-allow-mutations",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/utopia-php/framework.git", "url": "https://github.com/utopia-php/framework.git",
"reference": "c81789b87a917da2daf336738170ebe01f50ea18" "reference": "bf561c125647dcee8d6b3a5b3934c7ece91f326e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/utopia-php/framework/zipball/c81789b87a917da2daf336738170ebe01f50ea18", "url": "https://api.github.com/repos/utopia-php/framework/zipball/bf561c125647dcee8d6b3a5b3934c7ece91f326e",
"reference": "c81789b87a917da2daf336738170ebe01f50ea18", "reference": "bf561c125647dcee8d6b3a5b3934c7ece91f326e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.0.0" "php": ">=8.0.0"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^9.5.10", "phpunit/phpunit": "^9.5.25",
"vimeo/psalm": "4.13.1" "vimeo/psalm": "^4.27.0"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@ -2221,9 +2221,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/utopia-php/framework/issues", "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", "name": "utopia-php/image",
@ -2611,22 +2611,22 @@
}, },
{ {
"name": "utopia-php/swoole", "name": "utopia-php/swoole",
"version": "0.3.3", "version": "dev-feat-allow-mutations",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/utopia-php/swoole.git", "url": "https://github.com/utopia-php/swoole.git",
"reference": "8312df69233b5dcd3992de88f131f238002749de" "reference": "2c9e77696a4e40003a767c7d65cd5b2573f8b745"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/utopia-php/swoole/zipball/8312df69233b5dcd3992de88f131f238002749de", "url": "https://api.github.com/repos/utopia-php/swoole/zipball/2c9e77696a4e40003a767c7d65cd5b2573f8b745",
"reference": "8312df69233b5dcd3992de88f131f238002749de", "reference": "2c9e77696a4e40003a767c7d65cd5b2573f8b745",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-swoole": "*", "ext-swoole": "*",
"php": ">=8.0", "php": ">=8.0",
"utopia-php/framework": "0.*.*" "utopia-php/framework": "dev-feat-allow-mutations"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^9.3", "phpunit/phpunit": "^9.3",
@ -2661,9 +2661,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/utopia-php/swoole/issues", "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", "name": "utopia-php/system",
@ -5424,9 +5424,25 @@
"time": "2022-09-28T08:42:51+00:00" "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", "minimum-stability": "stable",
"stability-flags": [], "stability-flags": {
"utopia-php/framework": 20,
"utopia-php/swoole": 20
},
"prefer-stable": false, "prefer-stable": false,
"prefer-lowest": false, "prefer-lowest": false,
"platform": { "platform": {

View file

@ -2,6 +2,7 @@
namespace Appwrite\GraphQL; namespace Appwrite\GraphQL;
use Appwrite\GraphQL\Exception as GQLException;
use Appwrite\Promises\Swoole; use Appwrite\Promises\Swoole;
use Appwrite\Utopia\Request; use Appwrite\Utopia\Request;
use Appwrite\Utopia\Response; use Appwrite\Utopia\Response;
@ -26,10 +27,13 @@ class Resolvers
): callable { ): callable {
return static fn($type, $args, $context, $info) => new Swoole( return static fn($type, $args, $context, $info) => new Swoole(
function (callable $resolve, callable $reject) use ($utopia, $route, $args, $context, $info) { 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); $utopia = $utopia->getResource('utopia:graphql', true);
$request = $utopia->getResource('request', true); $request = $utopia->getResource('request', true);
$response = $utopia->getResource('response', true); $response = $utopia->getResource('response', true);
$swoole = $request->getSwoole();
$path = $route->getPath(); $path = $route->getPath();
foreach ($args as $key => $value) { foreach ($args as $key => $value) {
@ -38,16 +42,15 @@ class Resolvers
} }
} }
$swoole->server['request_method'] = $route->getMethod(); $request->setMethod($route->getMethod());
$swoole->server['request_uri'] = $path; $request->setURI($path);
$swoole->server['path_info'] = $path;
switch ($route->getMethod()) { switch ($route->getMethod()) {
case 'GET': case 'GET':
$swoole->get = $args; $request->setGet($args);
break; break;
default: default:
$swoole->post = $args; $request->setPost($args);
break; break;
} }
@ -101,11 +104,9 @@ class Resolvers
$utopia = $utopia->getResource('utopia:graphql', true); $utopia = $utopia->getResource('utopia:graphql', true);
$request = $utopia->getResource('request', true); $request = $utopia->getResource('request', true);
$response = $utopia->getResource('response', true); $response = $utopia->getResource('response', true);
$swoole = $request->getSwoole();
$swoole->server['request_method'] = 'GET'; $request->setMethod('GET');
$swoole->server['request_uri'] = "/v1/databases/$databaseId/collections/$collectionId/documents/{$args['id']}"; $request->setURI("/database/collections/{$collectionId}/documents/{$args['documentId']}");
$swoole->server['path_info'] = "/v1/databases/$databaseId/collections/$collectionId/documents/{$args['id']}";
self::resolve($utopia, $request, $response, $resolve, $reject); self::resolve($utopia, $request, $response, $resolve, $reject);
} }
@ -132,15 +133,12 @@ class Resolvers
$utopia = $utopia->getResource('utopia:graphql', true); $utopia = $utopia->getResource('utopia:graphql', true);
$request = $utopia->getResource('request', true); $request = $utopia->getResource('request', true);
$response = $utopia->getResource('response', true); $response = $utopia->getResource('response', true);
$swoole = $request->getSwoole();
$swoole->post = [ $request->setMethod('GET');
'databaseId' => $databaseId, $request->setURI("/database/collections/{$collectionId}/documents");
'collectionId' => $collectionId, $request->setGet([
'queries' => $args['queries'], '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) { $beforeResolve = function ($payload) {
return $payload['documents']; return $payload['documents'];
@ -171,7 +169,6 @@ class Resolvers
$utopia = $utopia->getResource('utopia:graphql', true); $utopia = $utopia->getResource('utopia:graphql', true);
$request = $utopia->getResource('request', true); $request = $utopia->getResource('request', true);
$response = $utopia->getResource('response', true); $response = $utopia->getResource('response', true);
$swoole = $request->getSwoole();
$id = $args['id'] ?? ID::unique(); $id = $args['id'] ?? ID::unique();
$permissions = $args['permissions'] ?? null; $permissions = $args['permissions'] ?? null;
@ -179,17 +176,17 @@ class Resolvers
unset($args['id']); unset($args['id']);
unset($args['permissions']); unset($args['permissions']);
$request->setMethod('POST');
$request->setURI("/v1/databases/$databaseId/collections/$collectionId/documents");
// Order must be the same as the route params // Order must be the same as the route params
$swoole->post = [ $request->setPost([
'databaseId' => $databaseId, 'databaseId' => $databaseId,
'documentId' => $id, 'documentId' => $id,
'collectionId' => $collectionId, 'collectionId' => $collectionId,
'data' => $args, 'data' => $args,
'permissions' => $permissions, '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); self::resolve($utopia, $request, $response, $resolve, $reject);
} }
@ -216,7 +213,6 @@ class Resolvers
$utopia = $utopia->getResource('utopia:graphql', true); $utopia = $utopia->getResource('utopia:graphql', true);
$request = $utopia->getResource('request', true); $request = $utopia->getResource('request', true);
$response = $utopia->getResource('response', true); $response = $utopia->getResource('response', true);
$swoole = $request->getSwoole();
$documentId = $args['id']; $documentId = $args['id'];
$permissions = $args['permissions'] ?? null; $permissions = $args['permissions'] ?? null;
@ -224,17 +220,17 @@ class Resolvers
unset($args['id']); unset($args['id']);
unset($args['permissions']); unset($args['permissions']);
$request->setMethod('PATCH');
$request->setURI("/v1/databases/$databaseId/collections/$collectionId/documents/$documentId");
// Order must be the same as the route params // Order must be the same as the route params
$swoole->post = [ $request->setPost([
'databaseId' => $databaseId, 'databaseId' => $databaseId,
'collectionId' => $collectionId, 'collectionId' => $collectionId,
'documentId' => $documentId, 'documentId' => $documentId,
'data' => $args, 'data' => $args,
'permissions' => $permissions, '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); self::resolve($utopia, $request, $response, $resolve, $reject);
} }
@ -261,13 +257,11 @@ class Resolvers
$utopia = $utopia->getResource('utopia:graphql', true); $utopia = $utopia->getResource('utopia:graphql', true);
$request = $utopia->getResource('request', true); $request = $utopia->getResource('request', true);
$response = $utopia->getResource('response', true); $response = $utopia->getResource('response', true);
$swoole = $request->getSwoole();
$documentId = $args['id']; $documentId = $args['id'];
$swoole->server['request_method'] = 'DELETE'; $request->setMethod('DELETE');
$swoole->server['request_uri'] = "/v1/databases/$databaseId/collections/$collectionId/documents/$documentId"; $request->setURI("/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); self::resolve($utopia, $request, $response, $resolve, $reject);
} }
@ -296,10 +290,10 @@ class Resolvers
): void { ): void {
// Drop json content type so post args are used directly // Drop json content type so post args are used directly
if ($request->getHeader('content-type') === 'application/json') { 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); $utopia->setResource('request', static fn() => $request);
$response->setContentType(Response::CONTENT_TYPE_NULL); $response->setContentType(Response::CONTENT_TYPE_NULL);