Passed
Push — master ( 309dcb...6acad1 )
by Petr
02:25
created

Storage   A

Complexity

Total Complexity 12

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 16
c 2
b 0
f 0
dl 0
loc 66
rs 10
ccs 26
cts 26
cp 1
wmc 12

12 Methods

Rating   Name   Duplication   Size   Complexity  
A read() 0 3 1
A removeMulti() 0 3 1
A lookup() 0 3 1
A write() 0 3 1
A canUse() 0 3 1
A __construct() 0 4 1
A remove() 0 3 1
A decrement() 0 3 1
A increment() 0 3 1
A exists() 0 3 1
A multiKey() 0 3 1
A isFlat() 0 3 1
1
<?php
2
3
namespace kalanis\kw_storage\Storage;
4
5
6
use kalanis\kw_storage\Interfaces;
7
use Traversable;
8
9
10
/**
11
 * Class Storage
12
 * @package kalanis\kw_storage\Storage
13
 * Main connection through storage structure
14
 */
15
class Storage implements Interfaces\IStorage
16
{
17
    /** @var Interfaces\ITarget */
18
    protected $target = null;
19
    /** @var Interfaces\IKey */
20
    protected $key = null;
21
22 18
    public function __construct(Interfaces\IKey $key, Interfaces\ITarget $target)
23
    {
24 18
        $this->target = $target;
25 18
        $this->key = $key;
26 18
    }
27
28 11
    public function canUse(): bool
29
    {
30 11
        return $this->target->check($this->key->fromSharedKey(''));
31
    }
32
33 5
    public function write(string $sharedKey, $data, ?int $timeout = null): bool
34
    {
35 5
        return $this->target->save($this->key->fromSharedKey($sharedKey), $data, $timeout);
36
    }
37
38 6
    public function read(string $sharedKey)
39
    {
40 6
        return $this->target->load($this->key->fromSharedKey($sharedKey));
41
    }
42
43 5
    public function remove(string $sharedKey): bool
44
    {
45 5
        return $this->target->remove($this->key->fromSharedKey($sharedKey));
46
    }
47
48 8
    public function exists(string $sharedKey): bool
49
    {
50 8
        return $this->target->exists($this->key->fromSharedKey($sharedKey));
51
    }
52
53 3
    public function lookup(string $mask): Traversable
54
    {
55 3
        return $this->target->lookup($this->key->fromSharedKey($mask));
56
    }
57
58 4
    public function increment(string $key): bool
59
    {
60 4
        return $this->target->increment($this->key->fromSharedKey($key));
61
    }
62
63 4
    public function decrement(string $key): bool
64
    {
65 4
        return $this->target->decrement($this->key->fromSharedKey($key));
66
    }
67
68 3
    public function removeMulti(array $keys): array
69
    {
70 3
        return $this->target->removeMulti(array_map([$this, 'multiKey'], $keys));
71
    }
72
73 1
    public function isFlat(): bool
74
    {
75 1
        return $this->target instanceof Interfaces\ITargetFlat;
76
    }
77
78 3
    public function multiKey(string $key): string
79
    {
80 3
        return $this->key->fromSharedKey($key);
81
    }
82
}
83