MigrationSteps::buildMigrationStep()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 1

Importance

Changes 0
Metric Value
eloc 10
dl 0
loc 12
ccs 11
cts 11
cp 1
rs 9.9332
c 0
b 0
f 0
cc 1
nc 1
nop 1
crap 1
1
<?php
2
namespace Triadev\EsMigration\Business\Service;
3
4
use Triadev\EsMigration\Business\Mapper\MigrationStatus;
5
use Triadev\EsMigration\Contract\Repository\ElasticsearchMigrationContract;
6
use Triadev\EsMigration\Contract\Repository\ElasticsearchMigrationStepContract;
7
use Triadev\EsMigration\Models\Entity\ElasticsearchMigrationStep;
8
use Triadev\EsMigration\Models\MigrationStep;
9
10
class MigrationSteps
11
{
12
    /** @var ElasticsearchMigrationContract */
13
    private $migrationRepository;
14
    
15
    /** @var ElasticsearchMigrationStepContract */
16
    private $migrationStepRepository;
17
    
18
    /**
19
     * MigrationSteps constructor.
20
     * @param ElasticsearchMigrationContract $migrationRepository
21
     * @param ElasticsearchMigrationStepContract $migrationStepRepository
22
     */
23 63
    public function __construct(
24
        ElasticsearchMigrationContract $migrationRepository,
25
        ElasticsearchMigrationStepContract $migrationStepRepository
26
    ) {
27 63
        $this->migrationRepository = $migrationRepository;
28 63
        $this->migrationStepRepository = $migrationStepRepository;
29 63
    }
30
    
31
    /**
32
     * Get migration steps
33
     *
34
     * @param string $migration
35
     * @param bool $withoutDoneSteps
36
     * @return MigrationStep[]
37
     */
38 7
    public function getMigrationSteps(string $migration, bool $withoutDoneSteps = true) : array
39
    {
40 7
        $migrations = [];
41
    
42 7
        if ($migrationEntity = $this->migrationRepository->find($migration)) {
43 7
            foreach ($migrationEntity->migrationSteps()->cursor() as $migrationStepEntity) {
44
                /** @var ElasticsearchMigrationStep $migrationStepEntity */
45 7
                if ($withoutDoneSteps &&
46 7
                    $migrationStepEntity->status == MigrationStatus::MIGRATION_STATUS_DONE) {
47 1
                    continue;
48
                }
49
                
50 7
                $migrations[] = $this->buildMigrationStep($migrationStepEntity);
51
            }
52
        }
53
    
54 7
        return $migrations;
55
    }
56
    
57
    /**
58
     * Get migration step
59
     *
60
     * @param int $migrationStepId
61
     * @return null|MigrationStep
62
     */
63 1
    public function getMigrationStep(int $migrationStepId) : ?MigrationStep
64
    {
65 1
        if ($migrationStepEntity = $this->migrationStepRepository->find($migrationStepId)) {
66
            return $this->buildMigrationStep($migrationStepEntity);
67
        }
68
        
69 1
        return null;
70
    }
71
    
72 7
    private function buildMigrationStep(ElasticsearchMigrationStep $elasticsearchMigrationStepEntity) : MigrationStep
73
    {
74 7
        return new MigrationStep(
75 7
            $elasticsearchMigrationStepEntity->id,
76 7
            $elasticsearchMigrationStepEntity->type,
77 7
            $elasticsearchMigrationStepEntity->status,
78 7
            $elasticsearchMigrationStepEntity->error,
79 7
            json_decode($elasticsearchMigrationStepEntity->params, true),
80 7
            $elasticsearchMigrationStepEntity->priority,
81 7
            $elasticsearchMigrationStepEntity->stop_on_failure,
82 7
            new \DateTime($elasticsearchMigrationStepEntity->created_at),
83 7
            new \DateTime($elasticsearchMigrationStepEntity->updated_at)
84
        );
85
    }
86
}
87