Passed
Pull Request — master (#2138)
by Nico
25:02 queued 13:24
created

Version20250610104115_LssMode::getDescription()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Stu\Migrations\Pgsql;
6
7
use Doctrine\DBAL\Schema\Schema;
8
use Doctrine\Migrations\AbstractMigration;
9
10
final class Version20250610104115_LssMode extends AbstractMigration
11
{
12
    public function getDescription(): string
13
    {
14
        return 'Transfer lss mode to lss system data.';
15
    }
16
17
    public function up(Schema $schema): void
18
    {
19
        $this->addSql(<<<'SQL'
20
            UPDATE stu_spacecraft_system ss
21
            SET data = '{"sensorRange":' || (ss.data::json->>'sensorRange') || ',"mode":' || (select sp.lss_mode from stu_spacecraft sp where sp.id = ss.spacecraft_id) || '}'
22
            WHERE system_type = 8
23
        SQL);
24
        $this->addSql(<<<'SQL'
25
            ALTER TABLE stu_spacecraft DROP lss_mode
26
        SQL);
27
    }
28
29
    public function down(Schema $schema): void
30
    {
31
        $this->addSql(<<<'SQL'
32
            ALTER TABLE stu_spacecraft ADD lss_mode SMALLINT DEFAULT NULL
33
        SQL);
34
        $this->addSql(<<<'SQL'
35
            UPDATE stu_spacecraft sp
36
            SET lss_mode = (SELECT (ss.data::json->>'mode')::smallint FROM stu_spacecraft_system ss WHERE ss.system_type = 8 AND ss.spacecraft_id = sp.id)
37
            WHERE EXISTS (SELECT * FROM stu_spacecraft_system ss WHERE ss.system_type = 8 AND ss.spacecraft_id = sp.id)
38
        SQL);
39
        $this->addSql(<<<'SQL'
40
            UPDATE stu_spacecraft SET lss_mode = 1 WHERE lss_mode IS NULL
41
        SQL);
42
        $this->addSql(<<<'SQL'
43
            ALTER TABLE stu_spacecraft ALTER lss_mode SET NOT NULL
44
        SQL);
45
    }
46
}
47