public function author(Comment $comment) { if ($comment->isAnonymous) { return null; } return DataSource::findUser($comment->authorId); }
public function affordances(Story $story, $args, AppContext $context) { $isViewer = $context->viewer === DataSource::findUser($story->authorId); $isLiked = DataSource::isLikedBy($story->id, $context->viewer->id); if ($isViewer) { $affordances[] = self::EDIT; $affordances[] = self::DELETE; } if ($isLiked) { $affordances[] = self::UNLIKE; } else { $affordances[] = self::LIKE; } return $affordances; }
public function user($rootValue, $args) { return DataSource::findUser($args['id']); }
if (!empty($_GET['debug'])) { // Enable additional validation of type configs // (disabled by default because it is costly) Config::enableValidation(); // Catch custom errors (to report them in query results if debugging is enabled) $phpErrors = []; set_error_handler(function ($severity, $message, $file, $line) use(&$phpErrors) { $phpErrors[] = new ErrorException($message, 0, $severity, $file, $line); }); } try { // Initialize our fake data source DataSource::init(); // Prepare context that will be available in all field resolvers (as 3rd argument): $appContext = new AppContext(); $appContext->viewer = DataSource::findUser('1'); // simulated "currently logged-in user" $appContext->rootUrl = 'http://localhost:8080'; $appContext->request = $_REQUEST; // Parse incoming query and variables if (isset($_SERVER['CONTENT_TYPE']) && strpos($_SERVER['CONTENT_TYPE'], 'application/json') !== false) { $raw = file_get_contents('php://input') ?: ''; $data = json_decode($raw, true); } else { $data = $_REQUEST; } $data += ['query' => null, 'variables' => null]; if (null === $data['query']) { $data['query'] = '{hello}'; } // GraphQL schema to be passed to query executor: