1
0
Fork 0
mirror of synced 2024-09-29 17:01:37 +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": "*",
"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
View file

@ -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": {

View file

@ -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);