Passed
Push — master ( 240c83...03f39b )
by Mathias
06:41
created

DoctrineMongoAdapter   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 3
eloc 11
dl 0
loc 37
rs 10
c 1
b 0
f 1

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A count() 0 5 1
A getItems() 0 8 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Core\Paginator\Adapter;
6
7
use Doctrine\ODM\MongoDB\Query\Builder as QueryBuilder;
8
use Laminas\Paginator\Adapter\AdapterInterface;
9
10
/**
11
 * Class DoctrineMongoAdapter
12
 * TODO: require count to be passed on constructor
13
 * @since 0.36
14
 * @package Core\Paginator\Adapter
15
 */
16
class DoctrineMongoAdapter implements AdapterInterface
17
{
18
    /**
19
     * @var QueryBuilder
20
     */
21
    private QueryBuilder $builder;
22
23
    public function __construct(QueryBuilder $builder)
24
    {
25
        $this->builder = $builder;
26
    }
27
28
    /**
29
     * @param int $offset
30
     * @param int $itemCountPerPage
31
     * @return array
32
     * @throws \Doctrine\ODM\MongoDB\MongoDBException
33
     */
34
    public function getItems($offset, $itemCountPerPage)
35
    {
36
        $builder = $this->builder;
37
        $builder->skip($offset);
38
        $builder->limit($itemCountPerPage);
39
        $builder->getQuery()->getIterator()->toArray();
40
41
        return $builder->getQuery()->getIterator()->toArray();
42
    }
43
44
    /**
45
     * @return int
46
     * @throws \Doctrine\ODM\MongoDB\MongoDBException
47
     */
48
    public function count()
49
    {
50
        $builder = clone $this->builder;
51
        $builder->count();
52
        return $builder->getQuery()->execute();
53
    }
54
}