Completed
Push — master ( 554f9d...0d589d )
by
unknown
13:57
created

AnalyticsManager::parseObjectDates()   B

Complexity

Conditions 5
Paths 2

Size

Total Lines 14
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 30

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 14
ccs 0
cts 14
cp 0
rs 8.8571
c 1
b 0
f 0
cc 5
eloc 10
nc 2
nop 1
crap 30
1
<?php
2
/**
3
 * Database manager and query manager
4
 */
5
6
namespace Graviton\AnalyticsBundle\Manager;
7
8
use Doctrine\ODM\MongoDB\DocumentManager;
9
use Graviton\AnalyticsBundle\Model\AnalyticModel;
10
11
/**
12
 * Manager for data layer single responsibility
13
 *
14
 * @author   List of contributors <https://github.com/libgraviton/graviton/graphs/contributors>
15
 * @license  http://opensource.org/licenses/gpl-license.php GNU Public License
16
 * @link     http://swisscom.ch
17
 */
18
class AnalyticsManager
19
{
20
    /** @var DocumentManager */
21
    protected $documentManager;
22
23
    /** @var string */
24
    protected $databaseName;
25
26
    /**
27
     * AnalyticsManager constructor.
28
     * @param DocumentManager $documentManager Db manager and query control
29
     * @param string          $databaseName    Db string name
30
     */
31
    public function __construct(
32
        DocumentManager $documentManager,
33
        $databaseName
34
    ) {
35
        $this->documentManager = $documentManager;
36
        $this->databaseName = $databaseName;
37
    }
38
39
    /**
40
     * Query db based on definition
41
     * Another option is to use: $collection->createAggregationBuilder();
42
     *
43
     * @param AnalyticModel $model Definition
44
     * @return array|object
45
     */
46
    public function getData(AnalyticModel $model)
47
    {
48
        $conn = $this->documentManager->getConnection();
49
        $collection = $conn->selectCollection($this->databaseName, $model->getCollection());
50
51
        // Build aggregation pipeline
52
        $pipeline = $model->getPipeline();
53
54
        $iterator = $collection->aggregate($pipeline);
55
        if ('object' === $model->getType()) {
56
            return $iterator->getSingleResult();
57
        }
58
        return $iterator->toArray();
59
    }
60
}
61