Completed
Pull Request — master (#1)
by Christopher
08:14 queued 02:30
created

Joining   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 54
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 14
dl 0
loc 54
ccs 16
cts 16
cp 1
rs 10
c 0
b 0
f 0
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A hasChild() 0 6 1
A nested() 0 10 1
A hasParent() 0 6 1
1
<?php
2
namespace Triadev\Es\Dsl\Dsl\Query;
3
4
use Triadev\Es\Dsl\Dsl\AbstractDsl;
5
use ONGR\ElasticsearchDSL\Query\Joining\NestedQuery;
6
use ONGR\ElasticsearchDSL\Query\Joining\HasChildQuery;
7
use ONGR\ElasticsearchDSL\Query\Joining\HasParentQuery;
8
use Triadev\Es\Dsl\Facade\ElasticDsl;
9
10
class Joining extends AbstractDsl
11
{
12
    /**
13
     * Nested
14
     *
15
     * @param string $path
16
     * @param \Closure $search
17
     * @param array $params
18
     * @return Joining
19
     */
20 1
    public function nested(string $path, \Closure $search, array $params = []) : Joining
21
    {
22 1
        $searchBuilder = ElasticDsl::search();
23 1
        $search($searchBuilder);
24
        
25 1
        return $this->append(
26 1
            new NestedQuery(
27 1
                $path,
28 1
                $searchBuilder->getQuery(),
29 1
                $params
30
            )
31
        );
32
    }
33
    
34
    /**
35
     * Has child
36
     *
37
     * @param string $type
38
     * @param \Closure $search
39
     * @param array $params
40
     * @return Joining
41
     */
42 1
    public function hasChild(string $type, \Closure $search, array $params = []): Joining
43
    {
44 1
        $searchBuilder = ElasticDsl::search();
45 1
        $search($searchBuilder);
46
        
47 1
        return $this->append(new HasChildQuery($type, $searchBuilder->getQuery(), $params));
48
    }
49
    
50
    /**
51
     * Has parent
52
     *
53
     * @param string $type
54
     * @param \Closure $search
55
     * @param array $params
56
     * @return Joining
57
     */
58 1
    public function hasParent(string $type, \Closure $search, array $params = []): Joining
59
    {
60 1
        $searchBuilder = ElasticDsl::search();
61 1
        $search($searchBuilder);
62
        
63 1
        return $this->append(new HasParentQuery($type, $searchBuilder->getQuery(), $params));
64
    }
65
}
66