SchemaSetup   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 54
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 9

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 9
dl 0
loc 54
c 0
b 0
f 0
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A createDoctrineYamlSchemaFactory() 0 7 1
A createDefaultMappingGuesserManager() 0 8 1
A createDoctrineSchemaFactory() 0 11 1
A createTypeResolver() 0 6 1
1
<?php
2
3
namespace Arthem\GraphQLMapper;
4
5
use Arthem\GraphQLMapper\Mapping\Driver\DefaultFilePathAccessor;
6
use Arthem\GraphQLMapper\Mapping\Driver\DriverInterface;
7
use Arthem\GraphQLMapper\Mapping\Driver\YamlDriver;
8
use Arthem\GraphQLMapper\Mapping\Guesser\CallableGuesser;
9
use Arthem\GraphQLMapper\Mapping\Guesser\DoctrineGuesser;
10
use Arthem\GraphQLMapper\Mapping\Guesser\MappingGuesserManager;
11
use Arthem\GraphQLMapper\Mapping\Guesser\PropertyGuesser;
12
use Arthem\GraphQLMapper\Schema\Resolve\DoctrineResolver;
13
use Arthem\GraphQLMapper\Schema\Resolve\PropertyResolver;
14
use Arthem\GraphQLMapper\Schema\SchemaFactory;
15
use Arthem\GraphQLMapper\Schema\TypeResolver;
16
use Doctrine\Common\Persistence\ObjectManager;
17
18
abstract class SchemaSetup
19
{
20
    /**
21
     * @param array         $mappingPaths
22
     * @param ObjectManager $om
23
     * @return SchemaFactory
24
     */
25
    public static function createDoctrineYamlSchemaFactory(array $mappingPaths, ObjectManager $om)
26
    {
27
        $accessor = new DefaultFilePathAccessor($mappingPaths);
28
        $driver   = new YamlDriver($accessor);
29
30
        return self::createDoctrineSchemaFactory($driver, $om);
31
    }
32
33
    /**
34
     * @return MappingGuesserManager
35
     */
36
    protected static function createDefaultMappingGuesserManager()
37
    {
38
        $mappingGuesser = new MappingGuesserManager();
39
        $mappingGuesser->addGuesser(new CallableGuesser());
40
        $mappingGuesser->addGuesser(new PropertyGuesser());
41
42
        return $mappingGuesser;
43
    }
44
45
    /**
46
     * @param DriverInterface $driver
47
     * @param ObjectManager   $om
48
     * @return SchemaFactory
49
     */
50
    protected static function createDoctrineSchemaFactory(DriverInterface $driver, ObjectManager $om)
51
    {
52
        $mappingGuesser = self::createDefaultMappingGuesserManager();
53
        $mappingGuesser->addGuesser(new DoctrineGuesser($om));
54
55
        $schemaFactory = new SchemaFactory($driver, self::createTypeResolver(), $mappingGuesser);
56
        $schemaFactory->addResolver(new PropertyResolver());
57
        $schemaFactory->addResolver(new DoctrineResolver($om));
58
59
        return $schemaFactory;
60
    }
61
62
    /**
63
     * @return TypeResolver
64
     */
65
    protected static function createTypeResolver()
66
    {
67
        $typeResolver = new TypeResolver();
68
69
        return $typeResolver;
70
    }
71
}
72