src/GraphQl/Type/SchemaBuilder.php
private function getResourceObjectTypeFields(?string $resourceClass, ResourceMetadata $resourceMetadata, bool $input, ?string $queryName, ?string $mutationName, int $depth = 0, ?array $ioMetadata = null): array
    {
        $fields = [];
        $idField = ['type' => GraphQLType::nonNull(GraphQLType::id())];
        $clientMutationId = GraphQLType::string();

        if (null !== $ioMetadata && null === $ioMetadata['class']) {
            if ($input) {
                return ['clientMutationId' => $clientMutationId];
            }

            return [];
        }

        if ('delete' === $mutationName) {
            $fields = [
                'id' => $idField,
            ];

            if ($input) {
                $fields['clientMutationId'] = $clientMutationId;
            }

            return $fields;
        }

        if (!$input || 'create' !== $mutationName) {
            $fields['id'] = $idField;
        }

        ++$depth; // increment the depth for the call to getResourceFieldConfiguration.

        if (null !== $resourceClass) {
            foreach ($this->propertyNameCollectionFactory->create($resourceClass) as $property) {
                $propertyMetadata = $this->propertyMetadataFactory->create($resourceClass, $property, ['graphql_operation_name' => $mutationName ?? $queryName ?? 'query']);
                if (
                    null === ($propertyType = $propertyMetadata->getType())
                    || (!$input && false === $propertyMetadata->isReadable())
                    || ($input && null !== $mutationName && false === $propertyMetadata->isWritable())
                ) {
                    continue;
                }

                $rootResource = $resourceClass;
                if (null !== $propertyMetadata->getSubresource()) {
                    $resourceClass = $propertyMetadata->getSubresource()->getResourceClass();
                    $resourceMetadata = $this->resourceMetadataFactory->create($resourceClass);
                }
                if ($fieldConfiguration = $this->getResourceFieldConfiguration($resourceClass, $resourceMetadata, $propertyMetadata->getDescription(), $propertyMetadata->getAttribute('deprecation_reason', ''), $propertyType, $rootResource, $input, $queryName, $mutationName, $depth)) {
                    $fields['id' === $property ? '_id' : $property] = $fieldConfiguration;
                }
                $resourceClass = $rootResource;
            }
        }

        if (null !== $mutationName && $input) {
            $fields['clientMutationId'] = $clientMutationId;
        }

        return $fields;
    }
private function getResourceObjectTypeFields(?string $resourceClass, ResourceMetadata $resourceMetadata, bool $input, ?string $queryName, ?string $mutationName, int $depth = 0, ?array $ioMetadata = null): array
    {
        $fields = [];
        $idField = ['type' => GraphQLType::nonNull(GraphQLType::id())];
        $clientMutationId = GraphQLType::string();

        if (null !== $ioMetadata && null === $ioMetadata['class']) {
            if ($input) {
                return ['clientMutationId' => $clientMutationId];
            }

            return [];
        }

        if ('delete' === $mutationName) {
            $fields = [
                'id' => $idField,
            ];

            if ($input) {
                $fields['clientMutationId'] = $clientMutationId;
            }

            return $fields;
        }

        if (!$input || 'create' !== $mutationName) {
            $fields['id'] = $idField;
        }

        ++$depth; // increment the depth for the call to getResourceFieldConfiguration.

        if (null !== $resourceClass) {
            foreach ($this->propertyNameCollectionFactory->create($resourceClass) as $property) {
                $propertyMetadata = $this->propertyMetadataFactory->create($resourceClass, $property, ['graphql_operation_name' => $mutationName ?? $queryName ?? 'query']);
                if (
                    null === ($propertyType = $propertyMetadata->getType())
                    || (!$input && false === $propertyMetadata->isReadable())
                    || ($input && null !== $mutationName && false === $propertyMetadata->isWritable())
                ) {
                    continue;
                }

                $rootResource = $resourceClass;
                if (null !== $propertyMetadata->getSubresource()) {
                    $resourceClass = $propertyMetadata->getSubresource()->getResourceClass();
                    $resourceMetadata = $this->resourceMetadataFactory->create($resourceClass);
                }
                if ($fieldConfiguration = $this->getResourceFieldConfiguration($resourceClass, $resourceMetadata, $propertyMetadata->getDescription(), $propertyMetadata->getAttribute('deprecation_reason', ''), $propertyType, $rootResource, $input, $queryName, $mutationName, $depth)) {
                    $fields['id' === $property ? '_id' : $property] = $fieldConfiguration;
                }
                $resourceClass = $rootResource;
            }
        }

        if (null !== $mutationName && $input) {
            $fields['clientMutationId'] = $clientMutationId;
        }

        return $fields;
    }
private function getResourceObjectTypeFields ( ? string $ resourceClass , ResourceMetadata $ resourceMetadata , bool $ input , ? string $ queryName , ? string $ mutationName , int $ depth = 0 , ? array $ ioMetadata = null ) : array { $ fields = [ ] ; $ idField = [ 'type' => GraphQLType :: nonNull ( GraphQLType :: id ( ) ) ] ; $ clientMutationId = GraphQLType :: string ( ) ; if ( null !== $ ioMetadata && null === $ ioMetadata [ 'class' ] ) { if ( $ input ) { return [ 'clientMutationId' => $ clientMutationId ] ; } return [ ] ; } if ( 'delete' === $ mutationName ) { $ fields = [ 'id' => $ idField , ] ; if ( $ input ) { $ fields [ 'clientMutationId' ] = $ clientMutationId ; } return $ fields ; } if ( ! $ input || 'create' !== $ mutationName ) { $ fields [ 'id' ] = $ idField ; } ++ $ depth ; // increment the depth for the call to getResourceFieldConfiguration. if ( null !== $ resourceClass ) { foreach ( $ this -> propertyNameCollectionFactory -> create ( $ resourceClass ) as $ property ) { $ propertyMetadata = $ this -> propertyMetadataFactory -> create ( $ resourceClass , $ property , [ 'graphql_operation_name' => $ mutationName ?? $ queryName ?? 'query' ] ) ; if ( null === ( $ propertyType = $ propertyMetadata -> getType ( ) ) || ( ! $ input && false === $ propertyMetadata -> isReadable ( ) ) || ( $ input && null !== $ mutationName && false === $ propertyMetadata -> isWritable ( ) ) ) { continue ; } $ rootResource = $ resourceClass ; if ( null !== $ propertyMetadata -> getSubresource ( ) ) { $ resourceClass = $ propertyMetadata -> getSubresource ( ) -> getResourceClass ( ) ; $ resourceMetadata = $ this -> resourceMetadataFactory -> create ( $ resourceClass ) ; } if ( $ fieldConfiguration = $ this -> getResourceFieldConfiguration ( $ resourceClass , $ resourceMetadata , $ propertyMetadata -> getDescription ( ) , $ propertyMetadata -> getAttribute ( 'deprecation_reason' , '' ) , $ propertyType , $ rootResource , $ input , $ queryName , $ mutationName , $ depth ) ) { $ fields [ 'id' === $ property ? '_id' : $ property ] = $ fieldConfiguration ; } $ resourceClass = $ rootResource ; } } if ( null !== $ mutationName && $ input ) { $ fields [ 'clientMutationId' ] = $ clientMutationId ; } return $ fields ; }
Gets the fields of the type of the given resource.
Gets the fields of the type of the given resource .