Completed
Push — master ( 75360a...120e4f )
by Portey
05:16
created

Schema::__construct()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 14
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 3

Importance

Changes 6
Bugs 3 Features 1
Metric Value
c 6
b 3
f 1
dl 0
loc 14
ccs 8
cts 8
cp 1
rs 9.4286
cc 3
eloc 7
nc 4
nop 1
crap 3
1
<?php
2
/*
3
* This file is a part of graphql-youshido project.
4
*
5
* @author Alexandr Viniychuk <[email protected]>
6
* created: 11/28/15 3:40 PM
7
*/
8
9
namespace Youshido\GraphQL;
10
11
use Youshido\GraphQL\Type\Config\Schema\SchemaConfig;
12
use Youshido\GraphQL\Type\Config\TypeConfigInterface;
13
use Youshido\GraphQL\Type\Object\AbstractObjectType;
14
use Youshido\GraphQL\Type\Object\InputObjectType;
15
use Youshido\GraphQL\Type\Object\ObjectType;
16
17
class Schema
18
{
19
20
    /** @var SchemaConfig */
21
    protected $config;
22
23 16
    public function __construct($config = [])
24
    {
25 16
        if (!array_key_exists('query', $config)) {
26 10
            $config['query'] = new ObjectType(['name' => $this->getName()]);
27
        }
28
29 16
        if (!array_key_exists('mutation', $config)) {
30 16
            $config['mutation'] = new InputObjectType(['name' => $this->getName()]);
31
        }
32
33 16
        $this->config = new SchemaConfig($config, $this);
34
35 15
        $this->build($this->config);
36 15
    }
37
38 9
    public function build(SchemaConfig $config)
39
    {
40 9
    }
41
42 14
    public function addQuery($name, AbstractObjectType $query, $config = [])
43
    {
44 14
        $this->getQueryType()->getConfig()->addField($name, $query, $config);
45 14
    }
46
47
    public function addMutation($name, AbstractObjectType $query, $config = [])
48
    {
49
        $this->getMutationType()->getConfig()->addField($name, $query, $config);
50
    }
51
52 14
    final public function getQueryType()
53
    {
54 14
        return $this->config->getQuery();
55
    }
56
57
    final public function getMutationType()
58
    {
59
        return $this->config->getMutation();
60
    }
61
62 15
    public function getName()
63
    {
64 15
        $defaultName = 'RootSchema';
65
66 15
        return $this->config ? $this->config->get('name', $defaultName) : $defaultName;
67
    }
68
69
}