Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
FromMetadataInputType
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
1 / 1
5
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
1 / 1
5
1<?php
2namespace Apie\Graphql\Types;
3
4use Apie\Core\Attributes\Description;
5use Apie\Core\Metadata\MetadataInterface;
6use Apie\Graphql\Concerns\CreatesFromMeta;
7use GraphQL\Type\Definition\InputObjectType;
8use ReflectionAttribute;
9
10class FromMetadataInputType extends InputObjectType
11{
12    use CreatesFromMeta;
13
14    public function __construct(MetadataInterface $metadata, string $suffix = '')
15    {
16        $config = [
17            'name' => ($metadata->toClass()?->getShortName() ?? $metadata->toScalarType()->value) . $suffix,
18            'fields' => [
19            ],
20        ];
21        
22        foreach ($metadata->toClass()?->getAttributes(Description::class, ReflectionAttribute::IS_INSTANCEOF) ?? [] as $descriptionAttribute) {
23            $description = $descriptionAttribute->newInstance();
24            $config['description'] = $description->description;
25        }
26        foreach ($metadata->getHashmap() as $name => $field) {
27            if ($field->isField()) {
28                $config['fields'][$name] = [
29                    'type' => self::createFromField($field),
30                ];
31                foreach ($field->getAttributes(Description::class) as $description) {
32                    $config['fields'][$name]['description'] = $description->description;
33                }
34            }
35        }
36        parent::__construct($config);
37    }
38
39
40}