1
0
Fork 0
mirror of synced 2024-07-01 04:30:59 +12:00

feat: handle document response type

This commit is contained in:
Christy Jacob 2021-03-08 20:13:28 +05:30
parent 42d6194ed9
commit 293b1b3c8a
2 changed files with 43 additions and 16 deletions

View file

@ -11,6 +11,7 @@ use Appwrite\Utopia\Response\Model;
use GraphQL\Error\ClientAware;
use GraphQL\Error\DebugFlag;
use GraphQL\Language\Parser;
use GraphQL\Type\Definition\ListOfType;
use GraphQL\Type\Definition\NonNull;
use Utopia\App;
use Utopia\Config\Config;
@ -55,6 +56,7 @@ $typeMapping = [
// Outliers
Model::TYPE_JSON => Type::string(),
Response::MODEL_ANY => Type::string(),
Response::MODEL_NONE => Type::string(),
];
@ -91,17 +93,42 @@ function createTypeMapping(Model $model, Response $response) {
$fields[$keyWithoutSpecialChars] = [
'type' => $type,
'description' => $props['description'],
'resolve' => function ($type, $args, $context, $info) use ($key) {
'resolve' => function ($object, $args, $context, $info) use ($key, $type) {
var_dump("************* RESOLVING FIELD {$info->fieldName} *************");
// var_dump("isCompositeType : ", Type::isCompositeType($type));
// var_dump("isLeafType : ", Type::isLeafType($type));
if ( $type[$key] instanceof stdClass ) {
// var_dump("STD Class");
return json_encode($type[$key]);
} else {
// var_dump("not stdclass");
return $type[$key];
// var_dump($info->returnType->getWrappedType());
var_dump("isListType : ", $info->returnType instanceof ListOfType);
var_dump("isBuiltinType : ", Type::isBuiltInType($info->returnType));
var_dump("isCompositeType : ", Type::isCompositeType($info->returnType));
var_dump("isLeafType : ", Type::isLeafType($info->returnType));
var_dump("isOutputType : ", Type::isOutputType($info->returnType));
var_dump("PHP Type of object: " . gettype($object[$key]));
switch(gettype($object[$key])) {
case 'array':
$isAssoc = count(array_filter(array_keys($object[$key]), 'is_string')) > 0 ;
if ($isAssoc) {
return json_encode($object[$key]);
} else {
return array_map('json_encode', $object[$key]);
}
case 'object':
return json_encode($object[$key]);
default:
return $object[$key];
}
$isListType = $info->returnType instanceof ListOfType;
if ($isListType) {
$isStringType = $info->returnType->getWrappedType() === Type::string();
} else {
}
// $isString = $info->returnType->getWrappedType();
}
];

View file

@ -330,13 +330,13 @@ class Response extends SwooleResponse
$this->payload = $output;
var_dump("********************** PAYLOAD SET *********************");
var_dump("Message : {$output['message']}");
var_dump("Code : {$output['code']}");
var_dump("Version : {$output['version']}");
var_dump("File : {$output['file']}");
var_dump("Line : {$output['line']}");
var_dump("Trace : ");
// var_dump("********************** PAYLOAD SET *********************");
// var_dump("Message : {$output['message']}");
// var_dump("Code : {$output['code']}");
// var_dump("Version : {$output['version']}");
// var_dump("File : {$output['file']}");
// var_dump("Line : {$output['line']}");
// var_dump("Trace : ");
return $this->payload;
}