Passed
Push — dev ( 6fa4a9...182017 )
by Janko
16:15 queued 15s
created

getDescription()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 2
Metric Value
cc 1
eloc 1
c 2
b 0
f 2
nc 1
nop 0
dl 0
loc 3
rs 10
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 Version20250602200524_NewPmCountGameTurnStats extends AbstractMigration
11
{
12
    public function getDescription(): string
13
    {
14
        return 'Added game turn stats for new pm count during last tick interval.';
15
    }
16
17
    public function up(Schema $schema): void
18
    {
19
        $this->addSql(<<<'SQL'
20
            ALTER TABLE stu_game_turn_stats ADD new_pm_count INT DEFAULT NULL
21
        SQL);
22
        $this->addSql(<<<'SQL'
23
            CREATE INDEX pm_date_idx ON stu_pms (date)
24
        SQL);
25
        $this->addSql(<<<'SQL'
26
            UPDATE stu_game_turn_stats stats
27
            SET new_pm_count = (
28
                SELECT COUNT(*)
29
                FROM stu_pms p
30
                WHERE p.date > (
31
                    SELECT t.startdate
32
                    FROM stu_game_turns t
33
                    WHERE t.id = (stats.turn_id - 1)
34
                )
35
                AND p.date < (
36
                    SELECT t.enddate
37
                    FROM stu_game_turns t
38
                    WHERE t.id = (stats.turn_id - 1)
39
                )
40
            )
41
        SQL);
42
        $this->addSql(<<<'SQL'
43
            ALTER TABLE stu_game_turn_stats ALTER new_pm_count DROP NOT NULL
44
        SQL);
45
    }
46
47
    public function down(Schema $schema): void
48
    {
49
        $this->addSql(<<<'SQL'
50
            DROP INDEX pm_date_idx
51
        SQL);
52
        $this->addSql(<<<'SQL'
53
            ALTER TABLE stu_game_turn_stats DROP new_pm_count
54
        SQL);
55
    }
56
}
57