From eb85ff8e1ea1f78945b27ea134acc2db2ca33b33 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Thu, 7 Apr 2022 18:38:38 +1200 Subject: [PATCH] Update graphql resources --- app/init.php | 37 ++++++++++++++++++++++--------------- composer.json | 2 +- composer.lock | 30 ++++++++++++++++-------------- 3 files changed, 39 insertions(+), 30 deletions(-) diff --git a/app/init.php b/app/init.php index 0e086e1f5d..3fbacd5df1 100644 --- a/app/init.php +++ b/app/init.php @@ -24,6 +24,7 @@ use Appwrite\Extend\Exception; use Appwrite\Auth\Auth; use Appwrite\Event\Event; use Appwrite\GraphQL\Builder; +use Appwrite\GraphQL\SwoolePromiseAdapter; use Appwrite\Network\Validator\Email; use Appwrite\Network\Validator\IP; use Appwrite\Network\Validator\URL; @@ -496,6 +497,9 @@ $register->set('cache', function () { // This is usually for our workers or CLI return $redis; }); +$register->set('promiseAdapter', function () { + return new SwoolePromiseAdapter(); +}); /* * Localization @@ -789,8 +793,6 @@ App::setResource('dbForProject', function($db, $cache, $project) { $database->setDefaultDatabase(App::getEnv('_APP_DB_SCHEMA', 'appwrite')); $database->setNamespace("_{$project->getId()}"); - Console::info("Getting dbForProject with ID: {$project->getId()}"); - return $database; }, ['db', 'cache', 'project']); @@ -858,18 +860,23 @@ App::setResource('geodb', function($register) { return $register->get('geodb'); }, ['register']); -App::setResource('schema', function($utopia, $response, $request, $register, $dbForProject) { - try { - Console::log('Getting GraphQL schema from register...'); - $schema = $register->get('_schema'); - $schema = Builder::appendSchema($schema, $dbForProject); - } catch (\Exception $e) { - Console::error('Base GraphQL schema not present. Generating...'); - $schema = Builder::buildSchema($utopia, $response, $register, $dbForProject); - Console::error('Built GraphQL schema: ' . \json_encode($schema)); - $register->set('_schema', function () use ($schema) { - return $schema; - }); +App::setResource('promiseAdapter', function ($register) { + /** @var Utopia\Registry\Registry $register */ + return $register->get('promiseAdapter'); +}, ['register']); + +App::setResource('apiSchema', function ($utopia, $response, $register) { + /** @var Utopia\App $utopia */ + /** @var Appwrite\Utopia\Response $response */ + /** @var Utopia\Registry\Registry $register */ + + if ($register->has('apiSchema')) { + return $register->get('apiSchema'); } + + $schema = Builder::buildAPISchema($utopia, $response, $register); + $register->set('apiSchema', static fn() => $schema); + return $schema; -}, ['utopia', 'response', 'request', 'register', 'dbForProject']); +}, ['utopia', 'response', 'register']); + diff --git a/composer.json b/composer.json index 79a91c81d7..b4cfd85c59 100644 --- a/composer.json +++ b/composer.json @@ -47,7 +47,7 @@ "utopia-php/config": "0.2.*", "utopia-php/database": "0.15.*", "utopia-php/locale": "0.4.*", - "utopia-php/registry": "0.5.*", + "utopia-php/registry": "dev-feat-allow-querying", "utopia-php/preloader": "0.2.*", "utopia-php/domains": "1.1.*", "utopia-php/swoole": "0.3.*", diff --git a/composer.lock b/composer.lock index 61d719ae75..fdbf3daf38 100644 --- a/composer.lock +++ b/composer.lock @@ -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": "de0b7c4c493217f3e9575af0e09277f2", + "content-hash": "39297e719edd93815a08c042decd55be", "packages": [ { "name": "adhocore/jwt", @@ -2576,16 +2576,16 @@ }, { "name": "utopia-php/registry", - "version": "0.5.0", + "version": "dev-feat-allow-querying", "source": { "type": "git", "url": "https://github.com/utopia-php/registry.git", - "reference": "bedc4ed54527b2803e6dfdccc39449f98522b70d" + "reference": "3cd3c13ba906af820b02dd717d92e2a1bad3eb7b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/registry/zipball/bedc4ed54527b2803e6dfdccc39449f98522b70d", - "reference": "bedc4ed54527b2803e6dfdccc39449f98522b70d", + "url": "https://api.github.com/repos/utopia-php/registry/zipball/3cd3c13ba906af820b02dd717d92e2a1bad3eb7b", + "reference": "3cd3c13ba906af820b02dd717d92e2a1bad3eb7b", "shasum": "" }, "require": { @@ -2622,9 +2622,9 @@ ], "support": { "issues": "https://github.com/utopia-php/registry/issues", - "source": "https://github.com/utopia-php/registry/tree/0.5.0" + "source": "https://github.com/utopia-php/registry/tree/feat-allow-querying" }, - "time": "2021-03-10T10:45:22+00:00" + "time": "2022-04-06T03:43:58+00:00" }, { "name": "utopia-php/storage", @@ -6393,16 +6393,16 @@ }, { "name": "twig/twig", - "version": "v3.3.9", + "version": "v3.3.10", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "6ff9b0e440fa66f97f207e181c41340ddfa5683d" + "reference": "8442df056c51b706793adf80a9fd363406dd3674" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/6ff9b0e440fa66f97f207e181c41340ddfa5683d", - "reference": "6ff9b0e440fa66f97f207e181c41340ddfa5683d", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/8442df056c51b706793adf80a9fd363406dd3674", + "reference": "8442df056c51b706793adf80a9fd363406dd3674", "shasum": "" }, "require": { @@ -6453,7 +6453,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.3.9" + "source": "https://github.com/twigphp/Twig/tree/v3.3.10" }, "funding": [ { @@ -6465,7 +6465,7 @@ "type": "tidelift" } ], - "time": "2022-03-25T09:37:52+00:00" + "time": "2022-04-06T06:47:41+00:00" }, { "name": "vimeo/psalm", @@ -6627,7 +6627,9 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": { + "utopia-php/registry": 20 + }, "prefer-stable": false, "prefer-lowest": false, "platform": {