HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/magento.bikenow.co/vendor/magento/framework/GraphQl/Query/EnumLookup.php
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
declare(strict_types=1);

namespace Magento\Framework\GraphQl\Query;

use Magento\Framework\Exception\RuntimeException;
use Magento\Framework\GraphQl\Config\Element\Enum;
use Magento\Framework\GraphQl\ConfigInterface;
use Magento\Framework\GraphQl\Schema\Type\Enum\DataMapperInterface;
use Magento\Framework\Phrase;

/**
 * Processor that looks up definition data of an enum to lookup and convert data as it's specified in the schema.
 */
class EnumLookup
{
    /**
     * @var ConfigInterface
     */
    private $typeConfig;

    /**
     * @var DataMapperInterface
     */
    private $enumDataMapper;

    /**
     * @param ConfigInterface $typeConfig
     * @param DataMapperInterface $enumDataMapper
     */
    public function __construct(ConfigInterface $typeConfig, DataMapperInterface $enumDataMapper)
    {
        $this->typeConfig = $typeConfig;
        $this->enumDataMapper = $enumDataMapper;
    }

    /**
     * Convert a field value from a db query to an enum value declared as an item in the graphql schema
     *
     * @param string $enumName
     * @param string $fieldValue
     * @return string
     * @throws RuntimeException
     */
    public function getEnumValueFromField(string $enumName, string $fieldValue) : string
    {
        /** @var Enum $enumObject */
        $enumObject = $this->typeConfig->getConfigElement($enumName);

        if (!($enumObject instanceof Enum)) {
            throw new RuntimeException(
                new Phrase('Enum type "%1" not defined', [$enumName])
            );
        }

        $mappedValues = $this->enumDataMapper->getMappedEnums($enumName);

        foreach ($enumObject->getValues() as $enumItem) {
            if (isset($mappedValues[$enumItem->getName()]) && $mappedValues[$enumItem->getName()] == $fieldValue) {
                return $enumItem->getValue();
            }
        }

        return '';
    }
}