Completed
Push — master ( 184ac5...e35746 )
by Dmitry
03:01
created

Clear::run()   B

Complexity

Conditions 8
Paths 48

Size

Total Lines 43

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 18
CRAP Score 8.0093

Importance

Changes 0
Metric Value
dl 0
loc 43
ccs 18
cts 19
cp 0.9474
rs 7.9875
c 0
b 0
f 0
cc 8
nc 48
nop 2
crap 8.0093
1
<?php
2
3
namespace Basis\Job\Tarantool;
4
5
use Basis\Job;
6
use Tarantool\Client\Client;
7
use Tarantool\Client\Schema\IndexIds;
8
use Tarantool\Client\Schema\Criteria;
9
use Basis\Filesystem;
10
11
class Clear extends Job
12
{
13 46
    public function run(Client $client, Filesystem $fs)
14
    {
15 46
        $space = $client->getSpace('_vspace');
16
17 46
        $client->evaluate("
18
            if box.space._queue ~= nil then
19
                if queue == nil then
20
                    queue = require('queue')
21
                end
22
                for i, q in box.space._queue:pairs() do
23
                    queue.tube[q.tube_name]:drop()
24
                end
25
            end
26
        ");
27
        
28 46
        $data = $space->select(Criteria::key([]));
29
30 46
        foreach ($data as $row) {
31 46
            if ($row[0] >= 512) {
32
                // user space
33 46
                if (strpos($row[2], '_queue') === false) {
34 46
                    $client->evaluate('box.space.'.$row[2].':drop()');
35
                }
36
            }
37
        }
38
39 46
        $sequences = $client->getSpace('_sequence')->select(Criteria::key([]));
40 46
        foreach ($sequences as $sequence) {
41 4
            $client->evaluate('box.sequence.'.$sequence[2].':drop()');
42
        }
43
44 46
        $schema = $client->getSpace('_schema')->select(Criteria::key([]));
45 46
        foreach ($schema as $tuple) {
46 46
            if (strpos($tuple[0], 'mapper-once') === 0) {
47 10
                $client->getSpace('_schema')->delete([$tuple[0]]);
48
            }
49
        }
50
51 46
        $filename = $fs->getPath('.cache/mapper-meta.php');
52 46
        if (file_exists($filename)) {
53
            unlink($filename);
54
        }
55 46
    }
56
}
57