feat: code cleanup
This commit is contained in:
parent
d0c3111844
commit
b1c58e2fc4
1 changed files with 36 additions and 45 deletions
|
@ -207,12 +207,12 @@ class Builder {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to initialise the typeMapping array with the base cases of the recursion
|
* Function to check if a model
|
||||||
*
|
*
|
||||||
* @param string $a
|
* @param string $a
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
protected static function isModel($response, Model $model) {
|
protected static function isModel($response, Model $model): bool {
|
||||||
|
|
||||||
foreach ($model->getRules() as $key => $rule) {
|
foreach ($model->getRules() as $key => $rule) {
|
||||||
if (!isset($response[$key])) {
|
if (!isset($response[$key])) {
|
||||||
|
@ -229,82 +229,73 @@ class Builder {
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public static function buildSchema($utopia, $response, $register) {
|
public static function buildSchema($utopia, $response, $register) {
|
||||||
|
|
||||||
self::init();
|
|
||||||
|
|
||||||
var_dump("[INFO] Building GraphQL Schema...");
|
var_dump("[INFO] Building GraphQL Schema...");
|
||||||
$start = microtime(true);
|
$start = microtime(true);
|
||||||
|
|
||||||
|
self::init();
|
||||||
$queryFields = [];
|
$queryFields = [];
|
||||||
$mutationFields = [];
|
$mutationFields = [];
|
||||||
|
|
||||||
foreach($utopia->getRoutes() as $method => $routes ){
|
foreach($utopia->getRoutes() as $method => $routes ){
|
||||||
foreach($routes as $route) {
|
foreach($routes as $route) {
|
||||||
$namespace = $route->getLabel('sdk.namespace', '');
|
$namespace = $route->getLabel('sdk.namespace', '');
|
||||||
|
$methodName = $namespace.'_'.$route->getLabel('sdk.method', '');
|
||||||
if ($namespace == 'database' || true) {
|
$responseModelName = $route->getLabel('sdk.response.model', "");
|
||||||
$methodName = $namespace.'_'.$route->getLabel('sdk.method', '');
|
if ( $responseModelName !== "" && $responseModelName !== Response::MODEL_NONE ) {
|
||||||
$responseModelName = $route->getLabel('sdk.response.model', "");
|
$responseModel = $response->getModel($responseModelName);
|
||||||
if ( $responseModelName !== "" && $responseModelName !== Response::MODEL_NONE ) {
|
self::createTypeMapping($responseModel, $response);
|
||||||
$responseModel = $response->getModel($responseModelName);
|
$type = self::$typeMapping[$responseModel->getType()];
|
||||||
self::createTypeMapping($responseModel, $response);
|
$args = self::getArgs($route->getParams(), $utopia);
|
||||||
$type = self::$typeMapping[$responseModel->getType()];
|
|
||||||
$args = self::getArgs($route->getParams(), $utopia);
|
|
||||||
|
|
||||||
$field = [
|
$field = [
|
||||||
'type' => $type,
|
'type' => $type,
|
||||||
'description' => $route->getDesc(),
|
'description' => $route->getDesc(),
|
||||||
'args' => $args,
|
'args' => $args,
|
||||||
'resolve' => function ($type, $args, $context, $info) use (&$register, $route) {
|
'resolve' => function ($type, $args, $context, $info) use (&$register, $route) {
|
||||||
$utopia = $register->get('__app');
|
$utopia = $register->get('__app');
|
||||||
$response = $register->get('__response');
|
$response = $register->get('__response');
|
||||||
$utopia->setRoute($route);
|
$utopia->setRoute($route);
|
||||||
$utopia->execute($route, $args);
|
$utopia->execute($route, $args);
|
||||||
$result = $response->getPayload();
|
$result = $response->getPayload();
|
||||||
if (self::isModel($result, $response->getModel(Response::MODEL_ERROR)) || self::isModel($result, $response->getModel(Response::MODEL_ERROR_DEV))) {
|
if (self::isModel($result, $response->getModel(Response::MODEL_ERROR)) || self::isModel($result, $response->getModel(Response::MODEL_ERROR_DEV))) {
|
||||||
var_dump("***** There has been an exception.. *****");
|
var_dump("***** There has been an exception.. *****");
|
||||||
unset($result['trace']);
|
unset($result['trace']);
|
||||||
// var_dump($result);
|
// var_dump($result);
|
||||||
throw new MySafeException($result['message'], $result['code']);
|
throw new MySafeException($result['message'], $result['code']);
|
||||||
}
|
|
||||||
|
|
||||||
return $result;
|
|
||||||
}
|
}
|
||||||
];
|
|
||||||
|
return $result;
|
||||||
if ($method == 'GET') {
|
|
||||||
$queryFields[$methodName] = $field;
|
|
||||||
} else if ($method == 'POST' || $method == 'PUT' || $method == 'PATCH' || $method == 'DELETE') {
|
|
||||||
$mutationFields[$methodName] = $field;
|
|
||||||
}
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($method == 'GET') {
|
||||||
|
$queryFields[$methodName] = $field;
|
||||||
|
} else if ($method == 'POST' || $method == 'PUT' || $method == 'PATCH' || $method == 'DELETE') {
|
||||||
|
$mutationFields[$methodName] = $field;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ksort($queryFields);
|
ksort($queryFields);
|
||||||
ksort($mutationFields);
|
ksort($mutationFields);
|
||||||
|
|
||||||
$queryType = new ObjectType([
|
$queryType = new ObjectType([
|
||||||
'name' => 'Query',
|
'name' => 'Query',
|
||||||
'description' => 'The root of all your queries',
|
'description' => 'The root of all your queries',
|
||||||
'fields' => $queryFields
|
'fields' => $queryFields
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$mutationType = new ObjectType([
|
$mutationType = new ObjectType([
|
||||||
'name' => 'Mutation',
|
'name' => 'Mutation',
|
||||||
'description' => 'The root of all your mutations',
|
'description' => 'The root of all your mutations',
|
||||||
'fields' => $mutationFields
|
'fields' => $mutationFields
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$schema = new Schema([
|
$schema = new Schema([
|
||||||
'query' => $queryType,
|
'query' => $queryType,
|
||||||
'mutation' => $mutationType
|
'mutation' => $mutationType
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
||||||
$time_elapsed_secs = microtime(true) - $start;
|
$time_elapsed_secs = microtime(true) - $start;
|
||||||
var_dump("[INFO] Time Taken To Build Schema : ${time_elapsed_secs}s");
|
var_dump("[INFO] Time Taken To Build Schema : ${time_elapsed_secs}s");
|
||||||
|
|
||||||
return $schema;
|
return $schema;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue