Passed
Push — master ( 82a58b...d35cf8 )
by Tomasz
02:32
created

DbalPaginator::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 0
cts 3
cp 0
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 3
crap 2
1
<?php
2
declare(strict_types=1);
3
4
namespace ReadModel\Bridge\Doctrine;
5
6
use Doctrine\DBAL\Query\QueryBuilder;
7
use ReadModel\Paginator;
8
9
class DbalPaginator extends Paginator
10
{
11
    /** @var QueryBuilder */
12
    private $qb;
13
14
    public function __construct(QueryBuilder $qb, ?int $limit, int $offset)
15
    {
16
        parent::__construct($limit, $offset);
17
        $this->qb = $qb;
18
    }
19
20
    protected function findAll(): array
21
    {
22
        $this->qb
23
             ->setMaxResults($this->limit)
24
             ->setFirstResult($this->offset);
25
26
        return $this->qb->execute()->fetchAll();
27
    }
28
29
    protected function getTotal(): int
30
    {
31
        $qb = clone $this->qb;
32
33
        $qb->select('COUNT(*)')
34
           ->setMaxResults(null)
35
           ->setFirstResult(null)
36
           ->resetQueryPart('orderBy');
37
38
        return (int) $qb->execute()->fetchColumn();
39
    }
40
}
41