From 4ef09b680ff4e6c2f828b4f73cd645f3914cc405 Mon Sep 17 00:00:00 2001 From: Binyamin Yawitz <316103+byawitz@users.noreply.github.com> Date: Fri, 21 Jun 2024 17:22:58 -0400 Subject: [PATCH] feat: GraphQL DI --- src/Appwrite/GraphQL/Resolvers.php | 18 ++++++++++-------- src/Appwrite/Promises/Swoole.php | 12 +++++------- tests/e2e/Services/GraphQL/Base.php | 2 +- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/Appwrite/GraphQL/Resolvers.php b/src/Appwrite/GraphQL/Resolvers.php index 2946f594d6..49d7c421f7 100644 --- a/src/Appwrite/GraphQL/Resolvers.php +++ b/src/Appwrite/GraphQL/Resolvers.php @@ -30,8 +30,10 @@ class Resolvers UtopiaHttpResponse $response, Container $container, ): callable { + $resolver = $this; + return fn ($type, $args, $context, $info) => new Swoole( - function (callable $resolve, callable $reject) use ($http, $route, $args, $context, $container, $info, $request, $response) { + function (callable $resolve, callable $reject) use ($http, $route, $args, $context, $container, $info, $request, $response, $resolver) { $path = $route->getPath(); foreach ($args as $key => $value) { if (\str_contains($path, '/:' . $key)) { @@ -50,7 +52,7 @@ class Resolvers $request->setPayload($args); break; } - Resolvers::resolve($http, $request, $response, $container, $resolve, $reject); + $resolver->resolve($http, $request, $response, $container, $resolve, $reject); } ); } @@ -101,7 +103,7 @@ class Resolvers $request->setMethod('GET'); $request->setURI($url($databaseId, $collectionId, $args)); - Resolvers::resolve($http, $request, $response, $container, $resolve, $reject); + $resolver->resolve($http, $request, $response, $container, $resolve, $reject); } ); } @@ -137,7 +139,7 @@ class Resolvers return $payload['documents']; }; - Resolvers::resolve($http, $request, $response, $container, $resolve, $reject, $beforeResolve); + $resolver->resolve($http, $request, $response, $container, $resolve, $reject, $beforeResolve); } ); } @@ -169,7 +171,7 @@ class Resolvers $request->setURI($url($databaseId, $collectionId, $args)); $request->setPayload($params($databaseId, $collectionId, $args)); - Resolvers::resolve($http, $request, $response, $container, $resolve, $reject); + $resolver->resolve($http, $request, $response, $container, $resolve, $reject); } ); } @@ -201,7 +203,7 @@ class Resolvers $request->setURI($url($databaseId, $collectionId, $args)); $request->setPayload($params($databaseId, $collectionId, $args)); - Resolvers::resolve($http, $request, $response, $container, $resolve, $reject); + $resolver->resolve($http, $request, $response, $container, $resolve, $reject); } ); } @@ -230,7 +232,7 @@ class Resolvers $request->setMethod('DELETE'); $request->setURI($url($databaseId, $collectionId, $args)); - Resolvers::resolve($http, $request, $response, $container, $resolve, $reject); + $resolver->resolve($http, $request, $response, $container, $resolve, $reject); } ); } @@ -246,7 +248,7 @@ class Resolvers * @return void * @throws Exception */ - private static function resolve( + private function resolve( Http $http, Request $request, Response $response, diff --git a/src/Appwrite/Promises/Swoole.php b/src/Appwrite/Promises/Swoole.php index d0b3eb8855..8cddd567f3 100644 --- a/src/Appwrite/Promises/Swoole.php +++ b/src/Appwrite/Promises/Swoole.php @@ -11,13 +11,11 @@ class Swoole extends Promise callable $resolve, callable $reject ): void { - \go(function () use ($executor, $resolve, $reject) { - try { - $executor($resolve, $reject); - } catch (\Throwable $exception) { - $reject($exception); - } - }); + try { + $executor($resolve, $reject); + } catch (\Throwable $exception) { + $reject($exception); + } } /** diff --git a/tests/e2e/Services/GraphQL/Base.php b/tests/e2e/Services/GraphQL/Base.php index 735e4eced5..b77f006bf8 100644 --- a/tests/e2e/Services/GraphQL/Base.php +++ b/tests/e2e/Services/GraphQL/Base.php @@ -2498,6 +2498,6 @@ trait Base protected function packageCode($folder): void { - Console::execute('cd ' . realpath(__DIR__ . "/../../../resources/functions") . "/$folder && tar --exclude code.tar.gz -czf code.tar.gz .", '', $this->stdout, $this->stderr); + Console::execute('cd ' . realpath(__DIR__ . "/../../../resources/functions") . "/$folder && tar --exclude code.tar.gz -czf code.tar.gz .", '', $this->stdout); } }