AggregateQueryProvider::getQueries()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 4
dl 0
loc 7
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 0
1
<?php
2
3
4
namespace TheCodingMachine\GraphQL\Controllers;
5
6
use function array_map;
7
use function array_merge;
8
use function is_array;
9
use function iterator_to_array;
10
11
/**
12
 * A query provider that aggregates several query providers together.
13
 */
14
class AggregateQueryProvider implements QueryProviderInterface
15
{
16
    /**
17
     * @var QueryProviderInterface[]
18
     */
19
    private $queryProviders;
20
21
    /**
22
     * @param QueryProviderInterface[] $queryProviders
23
     */
24
    public function __construct(iterable $queryProviders)
25
    {
26
        $this->queryProviders = is_array($queryProviders) ? $queryProviders : iterator_to_array($queryProviders);
27
    }
28
29
    /**
30
     * @return QueryField[]
31
     */
32
    public function getQueries(): array
33
    {
34
        $queriesArray = array_map(function(QueryProviderInterface $queryProvider) { return $queryProvider->getQueries(); }, $this->queryProviders);
35
        if ($queriesArray === []) {
36
            return [];
37
        }
38
        return array_merge(...$queriesArray);
39
    }
40
41
    /**
42
     * @return QueryField[]
43
     */
44
    public function getMutations(): array
45
    {
46
        $mutationsArray = array_map(function(QueryProviderInterface $queryProvider) { return $queryProvider->getMutations(); }, $this->queryProviders);
47
        if ($mutationsArray === []) {
48
            return [];
49
        }
50
        return array_merge(...$mutationsArray);
51
    }
52
}
53