Passed
Push — master ( 4d4f83...d89b39 )
by Nico
39:26 queued 25:42
created

Version20250616094739_UserRegistration   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 138
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 121
dl 0
loc 138
rs 10
c 1
b 0
f 0
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getDescription() 0 3 1
B down() 0 78 1
A up() 0 49 1
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 Version20250616094739_UserRegistration extends AbstractMigration
11
{
12
    public function getDescription(): string
13
    {
14
        return 'Extracted user registration fields from user entity.';
15
    }
16
17
    public function up(Schema $schema): void
18
    {
19
        $this->addSql(<<<'SQL'
20
            CREATE TABLE stu_user_registration (login VARCHAR(20) NOT NULL, pass VARCHAR(255) NOT NULL, sms_code VARCHAR(6) DEFAULT NULL, email VARCHAR(200) NOT NULL, mobile VARCHAR(255) DEFAULT NULL, creation INT NOT NULL, delmark SMALLINT NOT NULL, password_token VARCHAR(255) NOT NULL, sms_sended INT DEFAULT 1, user_id INT NOT NULL, PRIMARY KEY(user_id))
21
        SQL);
22
        $this->addSql(<<<'SQL'
23
            INSERT INTO stu_user_registration 
24
            (user_id, login, pass, email, creation, delmark, sms_code, mobile, password_token, sms_sended)
25
            SELECT u.id, u.login, u.pass, u.email, u.creation, u.delmark, u.sms_code, u.mobile, u.password_token, u.sms_sended
26
            FROM stu_user u
27
        SQL);
28
        $this->addSql(<<<'SQL'
29
            ALTER TABLE stu_user_registration ADD CONSTRAINT FK_9C660348A76ED395 FOREIGN KEY (user_id) REFERENCES stu_user (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE
30
        SQL);
31
        $this->addSql(<<<'SQL'
32
            ALTER TABLE stu_user DROP login
33
        SQL);
34
        $this->addSql(<<<'SQL'
35
            ALTER TABLE stu_user DROP pass
36
        SQL);
37
        $this->addSql(<<<'SQL'
38
            ALTER TABLE stu_user DROP email
39
        SQL);
40
        $this->addSql(<<<'SQL'
41
            ALTER TABLE stu_user DROP creation
42
        SQL);
43
        $this->addSql(<<<'SQL'
44
            ALTER TABLE stu_user DROP delmark
45
        SQL);
46
        $this->addSql(<<<'SQL'
47
            ALTER TABLE stu_user DROP tick
48
        SQL);
49
        $this->addSql(<<<'SQL'
50
            ALTER TABLE stu_user DROP password_token
51
        SQL);
52
        $this->addSql(<<<'SQL'
53
            ALTER TABLE stu_user DROP mobile
54
        SQL);
55
        $this->addSql(<<<'SQL'
56
            ALTER TABLE stu_user DROP sms_code
57
        SQL);
58
        $this->addSql(<<<'SQL'
59
            ALTER TABLE stu_user DROP sms_sended
60
        SQL);
61
62
        $this->addSql(<<<'SQL'
63
            ALTER TABLE stu_user_referer DROP CONSTRAINT FK_A00722FDA76ED395
64
        SQL);
65
        $this->addSql(<<<'SQL'
66
            ALTER TABLE stu_user_referer ADD CONSTRAINT FK_A00722FDA76ED395 FOREIGN KEY (user_id) REFERENCES stu_user_registration (user_id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE
67
        SQL);
68
    }
69
70
    public function down(Schema $schema): void
71
    {
72
        $this->addSql(<<<'SQL'
73
            ALTER TABLE stu_user ADD login VARCHAR(20) DEFAULT NULL
74
        SQL);
75
        $this->addSql(<<<'SQL'
76
            ALTER TABLE stu_user ADD pass VARCHAR(255) DEFAULT NULL
77
        SQL);
78
        $this->addSql(<<<'SQL'
79
            ALTER TABLE stu_user ADD email VARCHAR(200) DEFAULT NULL
80
        SQL);
81
        $this->addSql(<<<'SQL'
82
            ALTER TABLE stu_user ADD creation INT DEFAULT NULL
83
        SQL);
84
        $this->addSql(<<<'SQL'
85
            ALTER TABLE stu_user ADD delmark SMALLINT DEFAULT NULL
86
        SQL);
87
        $this->addSql(<<<'SQL'
88
            ALTER TABLE stu_user ADD tick SMALLINT DEFAULT NULL
89
        SQL);
90
        $this->addSql(<<<'SQL'
91
            ALTER TABLE stu_user ADD password_token VARCHAR(255) DEFAULT NULL
92
        SQL);
93
        $this->addSql(<<<'SQL'
94
            ALTER TABLE stu_user ADD mobile VARCHAR(255) DEFAULT NULL
95
        SQL);
96
        $this->addSql(<<<'SQL'
97
            ALTER TABLE stu_user ADD sms_code VARCHAR(6) DEFAULT NULL
98
        SQL);
99
        $this->addSql(<<<'SQL'
100
            ALTER TABLE stu_user ADD sms_sended INT DEFAULT NULL
101
        SQL);
102
103
        // fill data
104
        $this->addSql(<<<'SQL'
105
            UPDATE stu_user u
106
            SET login = ur.login, pass = ur.pass, email = ur.email, creation = ur.creation,
107
                delmark = ur.delmark, sms_code = ur.sms_code, mobile = ur.mobile,
108
                password_token = ur.password_token, sms_sended = ur.sms_sended
109
            FROM stu_user_registration ur
110
            WHERE ur.user_id = u.id
111
        SQL);
112
113
        // set not null
114
        $this->addSql(<<<'SQL'
115
            ALTER TABLE stu_user ALTER login SET NOT NULL
116
        SQL);
117
        $this->addSql(<<<'SQL'
118
            ALTER TABLE stu_user ALTER pass SET NOT NULL
119
        SQL);
120
        $this->addSql(<<<'SQL'
121
            ALTER TABLE stu_user ALTER email SET NOT NULL
122
        SQL);
123
        $this->addSql(<<<'SQL'
124
            ALTER TABLE stu_user ALTER creation SET NOT NULL
125
        SQL);
126
        $this->addSql(<<<'SQL'
127
            ALTER TABLE stu_user ALTER delmark SET NOT NULL
128
        SQL);
129
        $this->addSql(<<<'SQL'
130
            ALTER TABLE stu_user ALTER password_token SET NOT NULL
131
        SQL);
132
        $this->addSql(<<<'SQL'
133
            ALTER TABLE stu_user ALTER sms_sended SET NOT NULL
134
        SQL);
135
136
        // remove table
137
        $this->addSql(<<<'SQL'
138
            ALTER TABLE stu_user_registration DROP CONSTRAINT FK_9C660348A76ED395
139
        SQL);
140
        $this->addSql(<<<'SQL'
141
            DROP TABLE stu_user_registration
142
        SQL);
143
144
        $this->addSql(<<<'SQL'
145
            ALTER TABLE stu_user_referer DROP CONSTRAINT fk_a00722fda76ed395
146
        SQL);
147
        $this->addSql(<<<'SQL'
148
            ALTER TABLE stu_user_referer ADD CONSTRAINT fk_a00722fda76ed395 FOREIGN KEY (user_id) REFERENCES stu_user (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE
149
        SQL);
150
    }
151
}
152