1
0
Fork 0
mirror of synced 2024-09-12 15:47:12 +12:00

Remove redundant function

This commit is contained in:
Jake Barnby 2022-05-04 18:47:34 +12:00
parent 9deaf335cf
commit 54e672498e
No known key found for this signature in database
GPG key ID: A4674EBC0E404657

View file

@ -437,6 +437,7 @@ class Builder
$mutationFields = []; $mutationFields = [];
$limit = 1000; $limit = 1000;
$offset = 0; $offset = 0;
$count = 0;
$wg = new WaitGroup(); $wg = new WaitGroup();
@ -446,9 +447,13 @@ class Builder
offset: $offset offset: $offset
)))) { )))) {
$wg->add(); $wg->add();
$count += count($attrs);
go(function () use ($utopia, $request, $response, $dbForProject, &$collections, &$queryFields, &$mutationFields, $limit, &$offset, $attrs, $userId, $wg) { go(function () use ($utopia, $request, $response, $dbForProject, &$collections, &$queryFields, &$mutationFields, $limit, &$offset, $attrs, $userId, $wg) {
foreach ($attrs as $attr) { foreach ($attrs as $attr) {
$collectionId = $attr->getAttribute('collectionId'); $collectionId = $attr->getAttribute('collectionId');
if
if ($attr->getAttribute('status') !== 'available') { if ($attr->getAttribute('status') !== 'available') {
continue; continue;
} }
@ -459,7 +464,6 @@ class Builder
$escapedKey = str_replace('$', '_', $key); $escapedKey = str_replace('$', '_', $key);
$collections[$collectionId][$escapedKey] = [ $collections[$collectionId][$escapedKey] = [
'type' => self::getAttributeArgType($type, $array, $required), 'type' => self::getAttributeArgType($type, $array, $required),
'resolve' => fn($object, $args, $context, $info) => $object[$key],
]; ];
} }
@ -476,29 +480,28 @@ class Builder
$queryFields[$collectionId . 'Get'] = [ $queryFields[$collectionId . 'Get'] = [
'type' => $objectType, 'type' => $objectType,
'resolve' => self::queryGet($utopia, $request, $response, $dbForProject, $collectionId)
'args' => self::$defaultDocumentArgs['id'], 'args' => self::$defaultDocumentArgs['id'],
'resolve' => self::resolveDocumentGet($utopia, $request, $response, $dbForProject, $collectionId)
]; ];
$queryFields[$collectionId . 'List'] = [ $queryFields[$collectionId . 'List'] = [
'type' => $objectType, 'type' => $objectType,
'args' => $listArgs,
'resolve' => self::queryList($utopia, $request, $response, $dbForProject, $collectionId)
'args' => self::$defaultDocumentArgs['list'], 'args' => self::$defaultDocumentArgs['list'],
'resolve' => self::resolveDocumentList($utopia, $request, $response, $dbForProject, $collectionId)
]; ];
$mutationFields[$collectionId . 'Create'] = [ $mutationFields[$collectionId . 'Create'] = [
'type' => $objectType, 'type' => $objectType,
'args' => $attributes, 'args' => $attributes,
'resolve' => self::mutateCreate($utopia, $request, $response, $dbForProject, $collectionId) 'resolve' => self::resolveDocumentMutate($utopia, $request, $response, $dbForProject, $collectionId, 'POST')
]; ];
$mutationFields[$collectionId . 'Update'] = [ $mutationFields[$collectionId . 'Update'] = [
'type' => $objectType, 'type' => $objectType,
'args' => $attributes, 'args' => $attributes,
'resolve' => self::mutateUpdate($utopia, $request, $response, $dbForProject, $collectionId) 'resolve' => self::resolveDocumentMutate($utopia, $request, $response, $dbForProject, $collectionId, 'PATCH')
]; ];
$mutationFields[$collectionId . 'Delete'] = [ $mutationFields[$collectionId . 'Delete'] = [
'type' => $objectType, 'type' => $objectType,
'resolve' => self::mutateDelete($utopia, $request, $response, $dbForProject, $collectionId)
'args' => self::$defaultDocumentArgs['id'], 'args' => self::$defaultDocumentArgs['id'],
'resolve' => self::resolveDocumentDelete($utopia, $request, $response, $dbForProject, $collectionId)
]; ];
} }
$wg->done(); $wg->done();
@ -506,8 +509,9 @@ class Builder
$offset += $limit; $offset += $limit;
} }
$wg->wait(); $wg->wait();
$time_elapsed_secs = (microtime(true) - $start) * 1000; $time_elapsed_secs = (microtime(true) - $start) * 1000;
Console::info("[INFO] Built GraphQL Project Collection Schema in ${time_elapsed_secs}ms"); Console::info('[INFO] Built GraphQL Project Collection Schema (approx. ' . $count . ' attributes) in ' . $time_elapsed_secs . 'ms');
return [ return [
'query' => $queryFields, 'query' => $queryFields,
@ -573,12 +577,13 @@ class Builder
); );
} }
private static function mutateCreate( private static function resolveDocumentMutate(
App $utopia, App $utopia,
Request $request, Request $request,
Response $response, Response $response,
Database $dbForProject, Database $dbForProject,
string $collectionId string $collectionId,
string $method,
): callable ): callable
{ {
return fn($type, $args, $context, $info) => new CoroutinePromise( return fn($type, $args, $context, $info) => new CoroutinePromise(
@ -610,7 +615,7 @@ class Builder
); );
} }
private static function mutateDelete( private static function resolveDocumentDelete(
App $utopia, App $utopia,
Request $request, Request $request,
Response $response, Response $response,
@ -635,17 +640,14 @@ class Builder
} }
/** /**
* This function goes through all the REST endpoints in the API and builds a * @param \Swoole\Http\Request $swoole
* GraphQL schema for all those routes whose response model is neither empty nor NONE
*
* @param App $utopia
* @param Request $request
* @param Response $response * @param Response $response
* @param Registry $register * @param App $utopia
* @return array * @param callable $resolve
* @throws \Exception * @param callable $reject
* @return void
* @throws \Utopia\Exception
*/ */
public static function buildAPISchema(App $utopia, Request $request, Response $response, Registry $register): array
private static function resolve( private static function resolve(
App $utopia, App $utopia,
\Swoole\Http\Request $swoole, \Swoole\Http\Request $swoole,