public function __construct() { $config = ['name' => 'Query', 'fields' => ['user' => ['type' => Types::user(), 'description' => 'Returns user by id (in range of 1-5)', 'args' => ['id' => Types::nonNull(Types::id())]], 'viewer' => ['type' => Types::user(), 'description' => 'Represents currently logged-in user (for the sake of example - simply returns user with id == 1)'], 'stories' => ['type' => Types::listOf(Types::story()), 'description' => 'Returns subset of stories posted for this blog', 'args' => ['after' => ['type' => Types::id(), 'description' => 'Fetch stories listed after the story with this ID'], 'limit' => ['type' => Types::int(), 'description' => 'Number of stories to be returned', 'defaultValue' => 10]]], 'lastStoryPosted' => ['type' => Types::story(), 'description' => 'Returns last story posted for this blog'], 'deprecatedField' => ['type' => Types::string(), 'deprecationReason' => 'This field is deprecated!'], 'fieldWithException' => ['type' => Types::string(), 'resolve' => function () { throw new \Exception("Exception message thrown in field resolver"); }], 'hello' => Type::string()], 'resolveField' => function ($val, $args, $context, ResolveInfo $info) { return $this->{$info->fieldName}($val, $args, $context, $info); }]; parent::__construct($config); }
public function __construct() { $config = ['name' => 'ImageType', 'fields' => ['id' => Types::id(), 'type' => new EnumType(['name' => 'ImageTypeEnum', 'values' => ['USERPIC' => Image::TYPE_USERPIC]]), 'size' => Types::imageSizeEnum(), 'width' => Types::int(), 'height' => Types::int(), 'url' => ['type' => Types::url(), 'resolve' => [$this, 'resolveUrl']], 'fieldWithError' => ['type' => Types::string(), 'resolve' => function () { throw new \Exception("Field with exception"); }], 'nonNullFieldWithError' => ['type' => Types::nonNull(Types::string()), 'resolve' => function () { throw new \Exception("Non-null field with exception"); }]]]; parent::__construct($config); }
public function __construct() { // Option #2: define type using inheritance, see any other object type for compositional example $config = ['name' => 'ImageType', 'fields' => ['id' => Types::id(), 'type' => new EnumType(['name' => 'ImageTypeEnum', 'values' => ['USERPIC' => Image::TYPE_USERPIC]]), 'size' => Types::imageSizeEnum(), 'width' => Types::int(), 'height' => Types::int(), 'url' => ['type' => Types::url(), 'resolve' => [$this, 'resolveUrl']], 'fieldWithError' => ['type' => Types::string(), 'resolve' => function () { throw new \Exception("Field with exception"); }], 'nonNullFieldWithError' => ['type' => Types::nonNull(Types::string()), 'resolve' => function () { throw new \Exception("Non-null field with exception"); }]]]; parent::__construct($config); }
public function __construct() { // Option #1: using composition over inheritance to define type, see ImageType for inheritance example $this->definition = new ObjectType(['name' => 'Story', 'fields' => function () { return ['id' => Types::id(), 'author' => Types::user(), 'mentions' => Types::listOf(Types::mention()), 'totalCommentCount' => Types::int(), 'comments' => ['type' => Types::listOf(Types::comment()), 'args' => ['after' => ['type' => Types::id(), 'description' => 'Load all comments listed after given comment ID'], 'limit' => ['type' => Types::int(), 'defaultValue' => 5]]], 'likes' => ['type' => Types::listOf(Types::user()), 'args' => ['limit' => ['type' => Types::int(), 'description' => 'Limit the number of recent likes returned', 'defaultValue' => 5]]], 'likedBy' => ['type' => Types::listOf(Types::user())], 'affordances' => Types::listOf(new EnumType(['name' => 'StoryAffordancesEnum', 'values' => [self::EDIT, self::DELETE, self::LIKE, self::UNLIKE, self::REPLY]])), 'hasViewerLiked' => Types::boolean(), Types::htmlField('body')]; }, 'interfaces' => [Types::node()], 'resolveField' => function ($value, $args, $context, ResolveInfo $info) { if (method_exists($this, $info->fieldName)) { return $this->{$info->fieldName}($value, $args, $context, $info); } else { return $value->{$info->fieldName}; } }]); }
public function __construct() { // Option #1: using composition over inheritance to define type, see ImageType for inheritance example $this->definition = new ObjectType(['name' => 'Comment', 'fields' => function () { return ['id' => Types::id(), 'author' => Types::user(), 'parent' => Types::comment(), 'isAnonymous' => Types::boolean(), 'replies' => ['type' => Types::listOf(Types::comment()), 'args' => ['after' => Types::int(), 'limit' => ['type' => Types::int(), 'defaultValue' => 5]]], 'totalReplyCount' => Types::int(), Types::htmlField('body')]; }, 'resolveField' => function ($value, $args, $context, ResolveInfo $info) { if (method_exists($this, $info->fieldName)) { return $this->{$info->fieldName}($value, $args, $context, $info); } else { return $value->{$info->fieldName}; } }]); }
public function __construct() { $config = ['name' => 'Comment', 'fields' => function () { return ['id' => Types::id(), 'author' => Types::user(), 'parent' => Types::comment(), 'isAnonymous' => Types::boolean(), 'replies' => ['type' => Types::listOf(Types::comment()), 'args' => ['after' => Types::int(), 'limit' => ['type' => Types::int(), 'defaultValue' => 5]]], 'totalReplyCount' => Types::int(), Types::htmlField('body')]; }, 'resolveField' => function ($value, $args, $context, ResolveInfo $info) { if (method_exists($this, $info->fieldName)) { return $this->{$info->fieldName}($value, $args, $context, $info); } else { return $value->{$info->fieldName}; } }]; parent::__construct($config); }
public function __construct() { $config = ['name' => 'User', 'description' => 'Our blog authors', 'fields' => function () { return ['id' => Types::id(), 'email' => Types::email(), 'photo' => ['type' => Types::image(), 'description' => 'User photo URL', 'args' => ['size' => Types::nonNull(Types::imageSizeEnum())]], 'firstName' => ['type' => Types::string()], 'lastName' => ['type' => Types::string()], 'lastStoryPosted' => Types::story(), 'fieldWithError' => ['type' => Types::string(), 'resolve' => function () { throw new \Exception("This is error field"); }]]; }, 'interfaces' => [Types::node()], 'resolveField' => function ($value, $args, $context, ResolveInfo $info) { if (method_exists($this, $info->fieldName)) { return $this->{$info->fieldName}($value, $args, $context, $info); } else { return $value->{$info->fieldName}; } }]; parent::__construct($config); }
public function __construct() { // Option #1: using composition over inheritance to define type, see ImageType for inheritance example $this->definition = new ObjectType(['name' => 'User', 'description' => 'Our blog authors', 'fields' => function () { return ['id' => Types::id(), 'email' => Types::email(), 'photo' => ['type' => Types::image(), 'description' => 'User photo URL', 'args' => ['size' => Types::nonNull(Types::imageSizeEnum())]], 'firstName' => ['type' => Types::string()], 'lastName' => ['type' => Types::string()], 'lastStoryPosted' => Types::story(), 'fieldWithError' => ['type' => Types::string(), 'resolve' => function () { throw new \Exception("This is error field"); }]]; }, 'interfaces' => [Types::node()], 'resolveField' => function ($value, $args, $context, ResolveInfo $info) { if (method_exists($this, $info->fieldName)) { return $this->{$info->fieldName}($value, $args, $context, $info); } else { return $value->{$info->fieldName}; } }]); }
public function __construct() { // Option #1: using composition over inheritance to define type, see ImageType for inheritance example $this->definition = new InterfaceType(['name' => 'Node', 'fields' => ['id' => Types::id()], 'resolveType' => [$this, 'resolveType']]); }
public function __construct() { $config = ['name' => 'Node', 'fields' => ['id' => Types::id()], 'resolveType' => [$this, 'resolveNodeType']]; parent::__construct($config); }