| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | 
							- <?php
 
- /**
 
-  * Copyright © Magento, Inc. All rights reserved.
 
-  * See COPYING.txt for license details.
 
-  */
 
- namespace Magento\CatalogGraphQl\Model\Config;
 
- use Magento\Framework\Config\ReaderInterface;
 
- use Magento\Framework\GraphQl\Exception\GraphQlInputException;
 
- use Magento\Framework\GraphQl\Schema\Type\Entity\MapperInterface;
 
- use Magento\Framework\Reflection\TypeProcessor;
 
- use Magento\EavGraphQl\Model\Resolver\Query\Type;
 
- use Magento\CatalogGraphQl\Model\Resolver\Products\Attributes\Collection;
 
- /**
 
-  * Adds custom/eav attribute to Catalog product types in the GraphQL config.
 
-  */
 
- class AttributeReader implements ReaderInterface
 
- {
 
-     /**
 
-      * @var MapperInterface
 
-      */
 
-     private $mapper;
 
-     /**
 
-      * @var Type
 
-      */
 
-     private $typeLocator;
 
-     /**
 
-      * @var Collection
 
-      */
 
-     private $collection;
 
-     /**
 
-      * @param MapperInterface $mapper
 
-      * @param Type $typeLocator
 
-      * @param Collection $collection
 
-      */
 
-     public function __construct(
 
-         MapperInterface $mapper,
 
-         Type $typeLocator,
 
-         Collection $collection
 
-     ) {
 
-         $this->mapper = $mapper;
 
-         $this->typeLocator = $typeLocator;
 
-         $this->collection = $collection;
 
-     }
 
-     /**
 
-      * Read configuration scope
 
-      *
 
-      * @param string|null $scope
 
-      * @return array
 
-      * @throws GraphQlInputException
 
-      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
 
-      */
 
-     public function read($scope = null) : array
 
-     {
 
-         $typeNames = $this->mapper->getMappedTypes(\Magento\Catalog\Model\Product::ENTITY);
 
-         $config =[];
 
-         /** @var \Magento\Catalog\Model\ResourceModel\Eav\Attribute $attribute */
 
-         foreach ($this->collection->getAttributes() as $attribute) {
 
-             $attributeCode = $attribute->getAttributeCode();
 
-             $locatedType = $this->typeLocator->getType(
 
-                 $attributeCode,
 
-                 \Magento\Catalog\Model\Product::ENTITY
 
-             ) ?: 'String';
 
-             $locatedType = $locatedType === TypeProcessor::NORMALIZED_ANY_TYPE ? 'String' : ucfirst($locatedType);
 
-             foreach ($typeNames as $typeName) {
 
-                 $config[$typeName]['fields'][$attributeCode] = [
 
-                     'name' => $attributeCode,
 
-                     'type' => $locatedType,
 
-                     'arguments' => []
 
-                 ];
 
-             }
 
-         }
 
-         return $config;
 
-     }
 
- }
 
 
  |