ModuleRepository   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 77
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 92.31%

Importance

Changes 0
Metric Value
wmc 9
c 0
b 0
f 0
lcom 1
cbo 3
dl 0
loc 77
ccs 24
cts 26
cp 0.9231
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A has() 0 10 3
A __construct() 0 5 1
A getAll() 0 16 3
A add() 0 12 2
1
<?php
2
3
namespace Wambo\Core\Module;
4
5
6
use League\Flysystem\FileNotFoundException;
7
use Wambo\Core\Storage\StorageInterface;
8
9
/**
10
 * Class ModuleRepository
11
 * @package Wambo\Core\Module
12
 */
13
class ModuleRepository
14
{
15
16
    /**
17
     * @var StorageInterface
18
     */
19
    private $storage;
20
21
    /**
22
     * @var ModuleMapper
23
     */
24
    private $mapper;
25
26
    /**
27
     * ModuleRepository constructor.
28
     *
29
     * @param StorageInterface $storage
30
     * @param ModuleMapper $mapper
31
     */
32 4
    public function __construct(StorageInterface $storage, ModuleMapper $mapper)
33
    {
34 4
        $this->storage = $storage;
35 4
        $this->mapper = $mapper;
36 4
    }
37
38
    /**
39
     * @return array
40
     */
41 3
    public function getAll()
42
    {
43 3
        $modules = array();
44
45
        try {
46 3
            $modulesData = $this->storage->read();
47
        } catch (FileNotFoundException $e) {
48
            return [];
49
        }
50
51 3
        foreach ($modulesData as $moduleData)
52
        {
53 2
            $modules[] = $this->mapper->getModule($moduleData);
54
        }
55 3
        return $modules;
56
    }
57
58
    /**
59
     * @param Module $module
60
     */
61 2
    public function add(Module $module)
62
    {
63 2
        if ($this->has($module)) {
64 1
            return;
65
        }
66
67 2
        $allModules = $this->storage->read();
68 2
        $moduleData = $this->mapper->getData($module);
69 2
        array_push($allModules, $moduleData);
70
71 2
        $this->storage->write($allModules);
72 2
    }
73
74
    /**
75
     * @param Module $origModule
76
     * @return bool
77
     */
78 2
    public function has(Module $origModule) : bool
79
    {
80 2
        $allModules = $this->getAll();
81 2
        foreach ($allModules as $module) {
82 1
            if ($origModule->equals($module)) {
83 1
                return true;
84
            }
85
        }
86 2
        return false;
87
    }
88
89
}