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

Version20250616094739_UserRegistration::down()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 78
Code Lines 71

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 71
nc 1
nop 1
dl 0
loc 78
rs 8.6327
c 1
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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