Completed
Pull Request — master (#8)
by Alessandro
02:58
created

MongoDbDataCollector::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 1.0046

Importance

Changes 0
Metric Value
dl 0
loc 8
ccs 5
cts 6
cp 0.8333
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 5
nc 1
nop 0
crap 1.0046
1
<?php
2
3
declare(strict_types = 1);
4
5
namespace Facile\MongoDbBundle\DataCollector;
6
7
use Facile\MongoDbBundle\Services\Loggers\DataCollectorLoggerInterface;
8
use Facile\MongoDbBundle\Services\Loggers\Model\LogEvent;
9
use Symfony\Component\HttpFoundation\Request;
10
use Symfony\Component\HttpFoundation\Response;
11
use Symfony\Component\HttpKernel\DataCollector\DataCollector;
12
13
/**
14
 * Class MongoDbDataCollector.
15
 */
16
final class MongoDbDataCollector extends DataCollector
17
{
18
    const QUERY_KEYWORD = 'queries';
19
    const CONNECTION_KEYWORD = 'connections';
20
    const TIME_KEYWORD = 'totalTime';
21
22
    /** @var DataCollectorLoggerInterface */
23
    private $logger;
24
25 2
    public function __construct()
26
    {
27 2
        $this->data = [
28 2
            self::QUERY_KEYWORD => [],
29 2
            self::TIME_KEYWORD => 0.0,
30
            self::CONNECTION_KEYWORD => [],
31
        ];
32 2
    }
33
34
    /**
35
     * @param DataCollectorLoggerInterface $logger
36
     */
37 2
    public function setLogger(DataCollectorLoggerInterface $logger)
38
    {
39 2
        $this->logger = $logger;
40 2
    }
41
42
    /**
43
     * {@inheritdoc}
44
     */
45 2
    public function collect(Request $request, Response $response, \Exception $exception = null)
46
    {
47 2
        while ($this->logger->hasLoggedEvents()) {
48
            /** @var LogEvent $event */
49 1
            $event = $this->logger->getLoggedEvent();
50
51 1
            $this->data[self::QUERY_KEYWORD][] = $event;
52 1
            $this->data[self::TIME_KEYWORD] += $event->getExecutionTime();
53
        }
54
55 2
        $this->data[self::CONNECTION_KEYWORD] = $this->logger->getConnections();
56 2
    }
57
58
    /**
59
     * @return int
60
     */
61 2
    public function getQueryCount(): int
62
    {
63 2
        return count($this->data[self::QUERY_KEYWORD]);
64
    }
65
66
    /**
67
     * @return array
68
     */
69 2
    public function getQueries(): array
70
    {
71 2
        return $this->data[self::QUERY_KEYWORD];
72
    }
73
74
    /**
75
     * @return float
76
     */
77 2
    public function getTime(): float
78
    {
79 2
        return (float)($this->data[self::TIME_KEYWORD] * 1000);
80
    }
81
82
    /**
83
     * @return int
84
     */
85 2
    public function getConnectionsCount(): int
86
    {
87 2
        return count($this->data[self::CONNECTION_KEYWORD]);
88
    }
89
    /**
90
     * @return array|string[]
91
     */
92 2
    public function getConnections(): array
93
    {
94 2
        return $this->data[self::CONNECTION_KEYWORD];
95
    }
96
97
    /**
98
     * {@inheritdoc}
99
     */
100 2
    public function getName()
101
    {
102 2
        return 'mongodb';
103
    }
104
}
105