Version20201205102020::up()   F
last analyzed

Complexity

Conditions 25
Paths > 20000

Size

Total Lines 176
Code Lines 102

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 25
eloc 102
nc 9437184
nop 1
dl 0
loc 176
rs 0
c 0
b 0
f 0

How to fix   Long Method    Complexity   

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
/* For licensing terms, see /license.txt */
6
7
namespace Chamilo\CoreBundle\Migrations\Schema\V200;
8
9
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo;
10
use Doctrine\DBAL\Schema\Schema;
11
12
final class Version20201205102020 extends AbstractMigrationChamilo
13
{
14
    public function getDescription(): string
15
    {
16
        return 'Migrate skills';
17
    }
18
19
    public function up(Schema $schema): void
20
    {
21
        $table = $schema->getTable('skill');
22
23
        $this->addSql('UPDATE skill SET updated_at = NOW() WHERE CAST(updated_at AS CHAR(20)) = "0000-00-00 00:00:00"');
24
25
        if (!$table->hasColumn('asset_id')) {
26
            $this->addSql("ALTER TABLE skill ADD asset_id BINARY(16) DEFAULT NULL COMMENT '(DC2Type:uuid)'");
27
            $this->addSql('CREATE INDEX IDX_5E3DE4775DA1941 ON skill (asset_id)');
28
        }
29
30
        if (!$table->hasForeignKey('FK_5E3DE4775DA1941')) {
31
            $this->addSql('ALTER TABLE skill ADD CONSTRAINT FK_5E3DE4775DA1941 FOREIGN KEY (asset_id) REFERENCES asset (id)');
32
        }
33
34
        if (!$schema->hasTable('skill_rel_item_rel_user')) {
35
            $this->addSql(
36
                'CREATE TABLE skill_rel_item_rel_user (id INT AUTO_INCREMENT NOT NULL, skill_rel_item_id INT NOT NULL, user_id INT NOT NULL, result_id INT DEFAULT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, created_by INT NOT NULL, updated_by INT NOT NULL, INDEX IDX_D1133E0DFD4B12DC (skill_rel_item_id), INDEX IDX_D1133E0DA76ED395 (user_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;'
37
            );
38
            $this->addSql(
39
                'CREATE TABLE skill_rel_item (id INT AUTO_INCREMENT NOT NULL, skill_id INT DEFAULT NULL, item_type INT NOT NULL, item_id INT NOT NULL, obtain_conditions VARCHAR(255) DEFAULT NULL, requires_validation TINYINT(1) NOT NULL, is_real TINYINT(1) NOT NULL, c_id INT DEFAULT NULL, session_id INT DEFAULT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, created_by INT NOT NULL, updated_by INT NOT NULL, INDEX IDX_EB5B2A0D5585C142 (skill_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;'
40
            );
41
            $this->addSql(
42
                'ALTER TABLE skill_rel_item_rel_user ADD CONSTRAINT FK_D1133E0DFD4B12DC FOREIGN KEY (skill_rel_item_id) REFERENCES skill_rel_item (id);'
43
            );
44
            $this->addSql(
45
                'ALTER TABLE skill_rel_item_rel_user ADD CONSTRAINT FK_D1133E0DA76ED395 FOREIGN KEY (user_id) REFERENCES user (id);'
46
            );
47
            $this->addSql(
48
                'ALTER TABLE skill_rel_item ADD CONSTRAINT FK_EB5B2A0D5585C142 FOREIGN KEY (skill_id) REFERENCES skill (id) ON DELETE CASCADE'
49
            );
50
        }
51
52
        if (!$schema->hasTable('skill_rel_course')) {
53
            $this->addSql(
54
                'CREATE TABLE skill_rel_course (id INT AUTO_INCREMENT NOT NULL, skill_id INT DEFAULT NULL, c_id INT NOT NULL, session_id INT NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, INDEX IDX_E7CEC7FA5585C142 (skill_id), INDEX IDX_E7CEC7FA91D79BD3 (c_id), INDEX IDX_E7CEC7FA613FECDF (session_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;'
55
            );
56
            $this->addSql(
57
                'ALTER TABLE skill_rel_course ADD CONSTRAINT FK_E7CEC7FA5585C142 FOREIGN KEY (skill_id) REFERENCES skill (id) ON DELETE CASCADE'
58
            );
59
            $this->addSql(
60
                'ALTER TABLE skill_rel_course ADD CONSTRAINT FK_E7CEC7FA91D79BD3 FOREIGN KEY (c_id) REFERENCES course (id) ON DELETE CASCADE'
61
            );
62
            $this->addSql(
63
                'ALTER TABLE skill_rel_course ADD CONSTRAINT FK_E7CEC7FA613FECDF FOREIGN KEY (session_id) REFERENCES session (id) ON DELETE CASCADE'
64
            );
65
        } else {
66
            $table = $schema->getTable('skill_rel_course');
67
            if (!$table->hasForeignKey('FK_E7CEC7FA5585C142')) {
68
                $this->addSql('DELETE FROM skill_rel_course WHERE skill_id NOT IN (SELECT id FROM skill)');
69
                $this->addSql(
70
                    'ALTER TABLE skill_rel_course ADD CONSTRAINT FK_E7CEC7FA5585C142 FOREIGN KEY (skill_id) REFERENCES skill (id) ON DELETE CASCADE'
71
                );
72
            }
73
74
            if (!$table->hasForeignKey('FK_E7CEC7FA91D79BD3')) {
75
                $this->addSql('DELETE FROM skill_rel_course WHERE c_id NOT IN (SELECT id FROM course)');
76
                $this->addSql(
77
                    'ALTER TABLE skill_rel_course ADD CONSTRAINT FK_E7CEC7FA91D79BD3 FOREIGN KEY (c_id) REFERENCES course (id) ON DELETE CASCADE'
78
                );
79
            }
80
81
            if (!$table->hasForeignKey('FK_E7CEC7FA613FECDF')) {
82
                $this->addSql('DELETE FROM skill_rel_course WHERE session_id NOT IN (SELECT id FROM session)');
83
                $this->addSql(
84
                    'ALTER TABLE skill_rel_course ADD CONSTRAINT FK_E7CEC7FA613FECDF FOREIGN KEY (session_id) REFERENCES session (id) ON DELETE CASCADE'
85
                );
86
            }
87
        }
88
89
        $table = $schema->getTable('skill_rel_user');
90
        if (!$table->hasColumn('validation_status')) {
91
            $this->addSql('ALTER TABLE skill_rel_user ADD validation_status INT NOT NULL');
92
        }
93
94
        if (!$table->hasForeignKey('FK_79D3D95A5585C142')) {
95
            $this->addSql('DELETE FROM skill_rel_user WHERE skill_id NOT IN (SELECT id FROM skill)');
96
            $this->addSql(
97
                'ALTER TABLE skill_rel_user ADD CONSTRAINT FK_79D3D95A5585C142 FOREIGN KEY (skill_id) REFERENCES skill (id) ON DELETE CASCADE'
98
            );
99
        }
100
101
        if (!$table->hasForeignKey('FK_79D3D95A591CC992')) {
102
            $this->addSql('UPDATE skill_rel_user SET course_id = NULL WHERE course_id NOT IN (SELECT id FROM course)');
103
            $this->addSql(
104
                'ALTER TABLE skill_rel_user ADD CONSTRAINT FK_79D3D95A591CC992 FOREIGN KEY (course_id) REFERENCES course (id) ON DELETE SET NULL'
105
            );
106
        }
107
108
        if (!$table->hasForeignKey('FK_79D3D95A613FECDF')) {
109
            $this->addSql('UPDATE skill_rel_user SET session_id = NULL WHERE session_id NOT IN (SELECT id FROM session)');
110
            $this->addSql(
111
                'ALTER TABLE skill_rel_user ADD CONSTRAINT FK_79D3D95A613FECDF FOREIGN KEY (session_id) REFERENCES session (id) ON DELETE SET NULL'
112
            );
113
        }
114
115
        if (!$table->hasForeignKey('FK_79D3D95AA76ED395')) {
116
            $this->addSql('DELETE FROM skill_rel_user WHERE user_id NOT IN (SELECT id FROM user)');
117
            $this->addSql(
118
                'ALTER TABLE skill_rel_user ADD CONSTRAINT FK_79D3D95AA76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE'
119
            );
120
        }
121
122
        $table = $schema->getTable('skill_rel_profile');
123
        $this->addSql('ALTER TABLE skill_rel_profile CHANGE skill_id skill_id INT DEFAULT NULL');
124
        $this->addSql('ALTER TABLE skill_rel_profile CHANGE profile_id profile_id INT DEFAULT NULL');
125
126
        if (!$table->hasForeignKey('FK_6E73EA8D5585C142')) {
127
            $this->addSql('DELETE FROM skill_rel_profile WHERE skill_id NOT IN (SELECT id FROM skill)');
128
            $this->addSql(
129
                'ALTER TABLE skill_rel_profile ADD CONSTRAINT FK_6E73EA8D5585C142 FOREIGN KEY (skill_id) REFERENCES skill (id) ON DELETE CASCADE'
130
            );
131
        }
132
133
        if (!$table->hasForeignKey('FK_6E73EA8DCCFA12B8')) {
134
            $this->addSql('DELETE FROM skill_rel_profile WHERE profile_id NOT IN (SELECT id FROM skill_profile)');
135
            $this->addSql(
136
                'ALTER TABLE skill_rel_profile ADD CONSTRAINT FK_6E73EA8DCCFA12B8 FOREIGN KEY (profile_id) REFERENCES skill_profile (id) ON DELETE CASCADE'
137
            );
138
        }
139
140
        if (!$table->hasIndex('IDX_6E73EA8D5585C142')) {
141
            $this->addSql('CREATE INDEX IDX_6E73EA8D5585C142 ON skill_rel_profile (skill_id)');
142
        }
143
144
        if (!$table->hasIndex('IDX_6E73EA8DCCFA12B8')) {
145
            $this->addSql('CREATE INDEX IDX_6E73EA8DCCFA12B8 ON skill_rel_profile (profile_id)');
146
        }
147
148
        $table = $schema->getTable('skill_rel_gradebook');
149
150
        $this->addSql('ALTER TABLE skill_rel_gradebook CHANGE gradebook_id gradebook_id INT DEFAULT NULL');
151
        $this->addSql('ALTER TABLE skill_rel_gradebook CHANGE skill_id skill_id INT DEFAULT NULL');
152
153
        $this->addSql('DELETE FROM skill_rel_gradebook WHERE skill_id NOT IN (SELECT id FROM skill)');
154
        if (!$table->hasForeignKey('FK_4AC0B45E5585C142')) {
155
            $this->addSql(
156
                'ALTER TABLE skill_rel_gradebook ADD CONSTRAINT FK_4AC0B45E5585C142 FOREIGN KEY (skill_id) REFERENCES skill (id) ON DELETE CASCADE'
157
            );
158
        }
159
160
        $this->addSql('DELETE FROM skill_rel_gradebook WHERE gradebook_id NOT IN (SELECT id FROM gradebook_category)');
161
        if (!$table->hasForeignKey('FK_4AC0B45EAD3ED51C')) {
162
            $this->addSql(
163
                'ALTER TABLE skill_rel_gradebook ADD CONSTRAINT FK_4AC0B45EAD3ED51C FOREIGN KEY (gradebook_id) REFERENCES gradebook_category (id) ON DELETE CASCADE'
164
            );
165
        }
166
167
        if (!$table->hasIndex('IDX_4AC0B45E5585C142')) {
168
            $this->addSql('CREATE INDEX IDX_4AC0B45E5585C142 ON skill_rel_gradebook (skill_id)');
169
        }
170
        if (!$table->hasIndex('IDX_4AC0B45EAD3ED51C')) {
171
            $this->addSql('CREATE INDEX IDX_4AC0B45EAD3ED51C ON skill_rel_gradebook (gradebook_id)');
172
        }
173
174
        $table = $schema->getTable('skill_rel_skill');
175
176
        $this->addSql('ALTER TABLE skill_rel_skill CHANGE skill_id skill_id INT DEFAULT NULL');
177
        $this->addSql('ALTER TABLE skill_rel_skill CHANGE parent_id parent_id INT DEFAULT NULL');
178
179
        $this->addSql('UPDATE skill_rel_skill SET parent_id = NULL WHERE parent_id = 0');
180
181
        if (!$table->hasForeignKey('FK_DA77E5A65585C142')) {
182
            $this->addSql('ALTER TABLE skill_rel_skill ADD CONSTRAINT FK_DA77E5A65585C142 FOREIGN KEY (skill_id) REFERENCES skill (id);');
183
        }
184
185
        if (!$table->hasForeignKey('FK_DA77E5A6727ACA70')) {
186
            $this->addSql('ALTER TABLE skill_rel_skill ADD CONSTRAINT FK_DA77E5A6727ACA70 FOREIGN KEY (parent_id) REFERENCES skill (id) ON DELETE SET NULL;');
187
        }
188
189
        if (!$table->hasIndex('IDX_DA77E5A65585C142')) {
190
            $this->addSql('CREATE INDEX IDX_DA77E5A65585C142 ON skill_rel_skill (skill_id);');
191
        }
192
193
        if (!$table->hasIndex('IDX_DA77E5A6727ACA70')) {
194
            $this->addSql('CREATE INDEX IDX_DA77E5A6727ACA70 ON skill_rel_skill (parent_id);');
195
        }
196
    }
197
}
198