Skip to content

Commit e56214e

Browse files
committed
new resolve field logic
1 parent 9a0becf commit e56214e

File tree

2 files changed

+10
-11
lines changed

2 files changed

+10
-11
lines changed

src/Execution/Processor.php

+10-3
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,13 @@ protected function resolveFieldValue(AbstractField $field, $contextValue, Query
222222
{
223223
$resolveInfo = new ResolveInfo($field, $query->getFields(), $field->getType(), $this->executionContext);
224224

225-
return $field->resolve($contextValue, $this->parseArgumentsValues($field, $query), $resolveInfo);
225+
if ($resolveFunc = $field->getConfig()->getResolveFunction()) {
226+
return $resolveFunc($contextValue, $this->parseArgumentsValues($field, $query), $resolveInfo);
227+
} elseif ($propertyValue = TypeService::getPropertyValue($contextValue, $field->getName())) {
228+
return $propertyValue;
229+
} else {
230+
return $field->resolve($contextValue, $this->parseArgumentsValues($field, $query), $resolveInfo);
231+
}
226232
}
227233

228234
/**
@@ -251,9 +257,10 @@ protected function getPreResolvedValue($contextValue, FieldAst $fieldAst, Abstra
251257
$resolved = true;
252258
}
253259

254-
if ($field->getConfig()->getResolveFunction()) {
260+
if ($resolveFunction = $field->getConfig()->getResolveFunction()) {
255261
$resolveInfo = new ResolveInfo($field, [$fieldAst], $field->getType(), $this->executionContext);
256-
$resolverValue = $field->resolve($resolved ? $resolverValue : $contextValue, $fieldAst->getKeyValueArguments(), $resolveInfo);
262+
263+
$resolverValue = $resolveFunction($resolved ? $resolverValue : $contextValue, $fieldAst->getKeyValueArguments(), $resolveInfo);
257264
}
258265

259266
if (!$resolverValue && !$resolved) {

src/Field/AbstractField.php

-8
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,6 @@ public function setType($type)
5959
*/
6060
public function resolve($value, array $args, ResolveInfo $info)
6161
{
62-
if ($resolveFunc = $this->getConfig()->getResolveFunction()) {
63-
$info->setReturnType($this->getType());
64-
65-
return $resolveFunc($value, $args, $info);
66-
} elseif ($propertyValue = TypeService::getPropertyValue($value, $this->getName())) {
67-
return $propertyValue;
68-
}
69-
7062
return null;
7163
}
7264

0 commit comments

Comments
 (0)