graphql_compose-1.0.0-beta20/src/Plugin/GraphQLCompose/GraphQLComposeSchemaTypeBase.php
src/Plugin/GraphQLCompose/GraphQLComposeSchemaTypeBase.php
<?php
declare(strict_types=1);
namespace Drupal\graphql_compose\Plugin\GraphQLCompose;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Language\LanguageManagerInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\Core\Plugin\PluginBase;
use Drupal\graphql_compose\Plugin\GraphQLComposeEntityTypeManager;
use Drupal\graphql_compose\Plugin\GraphQLComposeFieldTypeManager;
use Drupal\graphql_compose\Plugin\GraphQLComposeSchemaTypeManager;
use GraphQL\Type\Definition\Type;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* A GraphQL type is used to build the schema definition file.
*/
abstract class GraphQLComposeSchemaTypeBase extends PluginBase implements GraphQLComposeSchemaTypeInterface, ContainerFactoryPluginInterface {
/**
* Constructs a GraphQLComposeSchemaTypeBase object.
*
* @param array $configuration
* The plugin configuration array.
* @param string $plugin_id
* The plugin id.
* @param array $plugin_definition
* The plugin definition array.
* @param \Drupal\Core\Config\ConfigFactoryInterface $configFactory
* Drupal config factory.
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager
* Drupal entity type manager.
* @param \Drupal\graphql_compose\Plugin\GraphQLComposeEntityTypeManager $gqlEntityTypeManager
* GraphQL Compose entity type plugin manager.
* @param \Drupal\graphql_compose\Plugin\GraphQLComposeFieldTypeManager $gqlFieldTypeManager
* GraphQL Compose field type plugin manager.
* @param \Drupal\graphql_compose\Plugin\GraphQLComposeSchemaTypeManager $gqlSchemaTypeManager
* GraphQL Compose schema type plugin manager.
* @param \Drupal\Core\Language\LanguageManagerInterface $languageManager
* Drupal language manager.
* @param \Drupal\Core\Extension\ModuleHandlerInterface $moduleHandler
* Drupal module handler.
*/
public function __construct(
array $configuration,
$plugin_id,
array $plugin_definition,
protected ConfigFactoryInterface $configFactory,
protected EntityTypeManagerInterface $entityTypeManager,
protected GraphQLComposeEntityTypeManager $gqlEntityTypeManager,
protected GraphQLComposeFieldTypeManager $gqlFieldTypeManager,
protected GraphQLComposeSchemaTypeManager $gqlSchemaTypeManager,
protected LanguageManagerInterface $languageManager,
protected ModuleHandlerInterface $moduleHandler,
) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static(
$configuration,
$plugin_id,
$plugin_definition,
$container->get('config.factory'),
$container->get('entity_type.manager'),
$container->get('graphql_compose.entity_type_manager'),
$container->get('graphql_compose.field_type_manager'),
$container->get('graphql_compose.schema_type_manager'),
$container->get('language_manager'),
$container->get('module_handler'),
);
}
/**
* {@inheritdoc}
*/
public static function type(string $plugin_id, bool $multiple = FALSE, bool $required = FALSE): Type {
return \Drupal::service('graphql_compose.schema_type_manager')->get($plugin_id, $multiple, $required);
}
/**
* {@inheritdoc}
*/
public function getExtensions(): array {
return [];
}
}
