QueryUser.php in Open Social 10.0.x
Same filename and directory in other branches
File
modules/social_features/social_user/src/Plugin/GraphQL/DataProducer/QueryUser.phpView source
<?php
namespace Drupal\social_user\Plugin\GraphQL\DataProducer;
use Drupal\Core\Cache\RefinableCacheableDependencyInterface;
use Drupal\social_graphql\GraphQL\EntityConnection;
use Drupal\social_graphql\Plugin\GraphQL\DataProducer\Entity\EntityDataProducerPluginBase;
use Drupal\social_user\GraphQL\QueryHelper\UserQueryHelper;
/**
* Queries the users on the platform.
*
* @DataProducer(
* id = "query_user",
* name = @Translation("Query a list of users"),
* description = @Translation("Retrieves a list of teas."),
* produces = @ContextDefinition("any",
* label = @Translation("User connection")
* ),
* consumes = {
* "first" = @ContextDefinition("integer",
* label = @Translation("First"),
* required = FALSE
* ),
* "after" = @ContextDefinition("string",
* label = @Translation("After"),
* required = FALSE
* ),
* "last" = @ContextDefinition("integer",
* label = @Translation("Last"),
* required = FALSE
* ),
* "before" = @ContextDefinition("string",
* label = @Translation("Before"),
* required = FALSE
* ),
* "reverse" = @ContextDefinition("boolean",
* label = @Translation("Reverse"),
* required = FALSE,
* default_value = FALSE
* ),
* "sortKey" = @ContextDefinition("string",
* label = @Translation("Sort key"),
* required = FALSE,
* default_value = "CREATED_AT"
* ),
* }
* )
*/
class QueryUser extends EntityDataProducerPluginBase {
/**
* Resolves the request to the requested values.
*
* @param int|null $first
* Fetch the first X results.
* @param string|null $after
* Cursor to fetch results after.
* @param int|null $last
* Fetch the last X results.
* @param string|null $before
* Cursor to fetch results before.
* @param bool $reverse
* Reverses the order of the data.
* @param string $sortKey
* Key to sort by.
* @param \Drupal\Core\Cache\RefinableCacheableDependencyInterface $metadata
* Cacheability metadata for this request.
*
* @return \Drupal\social_graphql\GraphQL\ConnectionInterface
* An entity connection with results and data about the paginated results.
*
* @todo https://www.drupal.org/project/social/issues/3191622
* @todo https://www.drupal.org/project/social/issues/3191637
*/
public function resolve(?int $first, ?string $after, ?int $last, ?string $before, bool $reverse, string $sortKey, RefinableCacheableDependencyInterface $metadata) {
$query_helper = new UserQueryHelper($this->entityTypeManager, $sortKey);
$metadata
->addCacheableDependency($query_helper);
$connection = new EntityConnection($query_helper);
$connection
->setPagination($first, $after, $last, $before, $reverse);
return $connection;
}
}