Completed
Push — master ( 2a87d3...f92572 )
by Tarmo
18s queued 13s
created

Version20191006091354::isTransactional()   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
c 0
b 0
f 0
nc 1
nop 0
dl 0
loc 3
rs 10
1
<?php
2
declare(strict_types = 1);
3
4
// phpcs:ignoreFile
5
namespace DoctrineMigrations;
6
7
use Doctrine\DBAL\Exception;
8
use Doctrine\DBAL\Schema\Schema;
9
use Doctrine\Migrations\AbstractMigration;
10
11
/**
12
 * Auto-generated Migration: Please modify to your needs!
13
 */
14
final class Version20191006091354 extends AbstractMigration
15
{
16
    /**
17
     * @noinspection PhpMissingParentCallCommonInspection
18
     */
19
    public function getDescription(): string
20
    {
21
        return 'Initial database structure';
22
    }
23
24
    /**
25
     * @throws Exception
26
     */
27
    public function up(Schema $schema): void
28
    {
29
        // this up() migration is auto-generated, please modify it to your needs
30
        $this->abortIf(
31
            $this->connection->getDatabasePlatform()->getName() !== 'mysql',
32
            'Migration can only be executed safely on \'mysql\'.'
33
        );
34
35
        $sqlRole = <<<SQL
36
CREATE TABLE role (
37
    role VARCHAR(255) NOT NULL, 
38
    description LONGTEXT NOT NULL, 
39
    created_at DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime_immutable)', 
40
    updated_at DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime_immutable)', 
41
    created_by_id BINARY(16) DEFAULT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
42
    updated_by_id BINARY(16) DEFAULT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
43
    INDEX IDX_57698A6AB03A8386 (created_by_id), 
44
    INDEX IDX_57698A6A896DBBDE (updated_by_id), 
45
    UNIQUE INDEX uq_role (role), 
46
    PRIMARY KEY(role)
47
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB
48
SQL;
49
50
        $this->addSql($sqlRole);
51
52
        $sqlUserGroup = <<<SQL
53
CREATE TABLE user_group (
54
    id BINARY(16) NOT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
55
    role VARCHAR(255) DEFAULT NULL, 
56
    name VARCHAR(255) NOT NULL, 
57
    created_at DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime_immutable)', 
58
    updated_at DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime_immutable)', 
59
    created_by_id BINARY(16) DEFAULT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
60
    updated_by_id BINARY(16) DEFAULT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
61
    INDEX IDX_8F02BF9D57698A6A (role), 
62
    INDEX IDX_8F02BF9DB03A8386 (created_by_id),
63
    INDEX IDX_8F02BF9D896DBBDE (updated_by_id), 
64
    PRIMARY KEY(id)
65
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB
66
SQL;
67
68
        $this->addSql($sqlUserGroup);
69
70
        $sqlUser = <<<SQL
71
CREATE TABLE user (
72
    id BINARY(16) NOT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
73
    username VARCHAR(255) NOT NULL, 
74
    first_name VARCHAR(255) NOT NULL, 
75
    last_name VARCHAR(255) NOT NULL, 
76
    email VARCHAR(255) NOT NULL, 
77
    password VARCHAR(255) NOT NULL, 
78
    created_at DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime_immutable)', 
79
    updated_at DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime_immutable)', 
80
    created_by_id BINARY(16) DEFAULT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
81
    updated_by_id BINARY(16) DEFAULT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
82
    INDEX IDX_8D93D649B03A8386 (created_by_id), 
83
    INDEX IDX_8D93D649896DBBDE (updated_by_id), 
84
    UNIQUE INDEX uq_username (username), 
85
    UNIQUE INDEX uq_email (email), 
86
    PRIMARY KEY(id)
87
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB
88
SQL;
89
90
        $this->addSql($sqlUser);
91
92
        $sqlApiKey = <<<SQL
93
CREATE TABLE api_key (
94
    id BINARY(16) NOT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
95
    token VARCHAR(40) NOT NULL, 
96
    description LONGTEXT NOT NULL, 
97
    created_at DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime_immutable)', 
98
    updated_at DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime_immutable)', 
99
    created_by_id BINARY(16) DEFAULT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
100
    updated_by_id BINARY(16) DEFAULT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
101
    INDEX IDX_C912ED9DB03A8386 (created_by_id), 
102
    INDEX IDX_C912ED9D896DBBDE (updated_by_id), 
103
    UNIQUE INDEX uq_token (token), 
104
    PRIMARY KEY(id)
105
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB
106
SQL;
107
108
        $this->addSql($sqlApiKey);
109
110
        $sqlUserHasUserGroup = <<<SQL
111
CREATE TABLE user_has_user_group (
112
    user_id BINARY(16) NOT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
113
    user_group_id BINARY(16) NOT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
114
    INDEX IDX_2C59957A76ED395 (user_id), 
115
    INDEX IDX_2C599571ED93D47 (user_group_id), 
116
    PRIMARY KEY(user_id, user_group_id)
117
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB
118
SQL;
119
120
        $this->addSql($sqlUserHasUserGroup);
121
122
        $sqlApiKeyHasUserGroup = <<<SQL
123
CREATE TABLE api_key_has_user_group (
124
    api_key_id BINARY(16) NOT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
125
    user_group_id BINARY(16) NOT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
126
    INDEX IDX_E2D0E7F98BE312B3 (api_key_id), 
127
    INDEX IDX_E2D0E7F91ED93D47 (user_group_id), 
128
    PRIMARY KEY(api_key_id, user_group_id)
129
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB
130
SQL;
131
132
        $this->addSql($sqlApiKeyHasUserGroup);
133
134
        $sqlLogLogin = <<<SQL
135
CREATE TABLE log_login (
136
    id BINARY(16) NOT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
137
    user_id BINARY(16) DEFAULT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
138
    type ENUM('failure', 'success') NOT NULL COMMENT '(DC2Type:EnumLogLogin)', 
139
    http_host VARCHAR(255) NOT NULL, 
140
    client_ip VARCHAR(255) NOT NULL, 
141
    client_type VARCHAR(255) DEFAULT NULL, 
142
    client_name VARCHAR(255) DEFAULT NULL, 
143
    client_short_name VARCHAR(255) DEFAULT NULL, 
144
    client_version VARCHAR(255) DEFAULT NULL, 
145
    client_engine VARCHAR(255) DEFAULT NULL, 
146
    os_name VARCHAR(255) DEFAULT NULL, 
147
    os_short_name VARCHAR(255) DEFAULT NULL, 
148
    os_version VARCHAR(255) DEFAULT NULL, 
149
    os_platform VARCHAR(255) DEFAULT NULL, 
150
    device_name VARCHAR(255) DEFAULT NULL, 
151
    brand_name VARCHAR(255) DEFAULT NULL, 
152
    model VARCHAR(255) DEFAULT NULL, 
153
    agent LONGTEXT NOT NULL, 
154
    `date` DATE NOT NULL COMMENT '(DC2Type:date_immutable)', 
155
    time DATETIME NOT NULL COMMENT '(DC2Type:datetime_immutable)', 
156
    INDEX user_id (user_id), 
157
    INDEX date (date), 
158
    PRIMARY KEY(id)
159
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB
160
SQL;
161
162
        $this->addSql($sqlLogLogin);
163
164
        $sqlLogRequest = <<<SQL
165
CREATE TABLE log_request (
166
    id BINARY(16) NOT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
167
    user_id BINARY(16) DEFAULT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
168
    api_key_id BINARY(16) DEFAULT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
169
    status_code INT NOT NULL, 
170
    controller VARCHAR(255) DEFAULT NULL, 
171
    action VARCHAR(255) DEFAULT NULL, 
172
    method VARCHAR(255) NOT NULL, 
173
    scheme VARCHAR(5) NOT NULL, 
174
    uri LONGTEXT NOT NULL, 
175
    script VARCHAR(255) NOT NULL, 
176
    base_path VARCHAR(255) NOT NULL, 
177
    path VARCHAR(255) DEFAULT NULL, 
178
    query_string LONGTEXT DEFAULT NULL, 
179
    agent LONGTEXT NOT NULL, 
180
    response_content_length INT NOT NULL, 
181
    http_host VARCHAR(255) NOT NULL, 
182
    client_ip VARCHAR(255) NOT NULL, 
183
    headers LONGTEXT NOT NULL COMMENT '(DC2Type:array)', 
184
    parameters LONGTEXT NOT NULL COMMENT '(DC2Type:array)', 
185
    content LONGTEXT DEFAULT NULL, 
186
    content_type VARCHAR(255) DEFAULT NULL, 
187
    content_type_short VARCHAR(255) DEFAULT NULL, 
188
    is_master_request TINYINT(1) NOT NULL, 
189
    is_xml_http_request TINYINT(1) NOT NULL, 
190
    `date` DATE NOT NULL COMMENT '(DC2Type:date_immutable)', 
191
    time DATETIME NOT NULL COMMENT '(DC2Type:datetime_immutable)', 
192
    INDEX user_id (user_id), 
193
    INDEX api_key_id (api_key_id), 
194
    INDEX request_date (date), 
195
    PRIMARY KEY(id)
196
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB
197
SQL;
198
199
        $this->addSql($sqlLogRequest);
200
201
        $sqlLogLoginFailure = <<<SQL
202
CREATE TABLE log_login_failure (
203
    id BINARY(16) NOT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
204
    user_id BINARY(16) NOT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
205
    timestamp DATETIME NOT NULL COMMENT '(DC2Type:datetime_immutable)', 
206
    INDEX user_id (user_id), 
207
    PRIMARY KEY(id)
208
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB
209
SQL;
210
211
        $this->addSql($sqlLogLoginFailure);
212
213
        $sqlHealthz = <<<SQL
214
CREATE TABLE healthz (
215
    id BINARY(16) NOT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
216
    timestamp DATETIME NOT NULL COMMENT '(DC2Type:datetime_immutable)', 
217
    PRIMARY KEY(id)
218
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB
219
SQL;
220
221
        $this->addSql($sqlHealthz);
222
223
        $sqlDateDimension = <<<SQL
224
CREATE TABLE date_dimension (
225
    id BINARY(16) NOT NULL COMMENT '(DC2Type:uuid_binary_ordered_time)', 
226
    date DATE NOT NULL, 
227
    year INT NOT NULL COMMENT 'A full numeric representation of a year, 4 digits', 
228
    month INT NOT NULL COMMENT 'Day of the month without leading zeros; 1 to 12', 
229
    day INT NOT NULL COMMENT 'Day of the month without leading zeros; 1 to 31', 
230
    quarter INT NOT NULL COMMENT 'Calendar quarter; 1, 2, 3 or 4', 
231
    week_number INT NOT NULL COMMENT 'ISO-8601 week number of year, weeks starting on Monday', 
232
    day_number_of_week INT NOT NULL COMMENT 'ISO-8601 numeric representation of the day of the week; 1 (for Monday) to 7 (for Sunday)', 
233
    day_number_of_year INT NOT NULL COMMENT 'The day of the year (starting from 0); 0 through 365', 
234
    leap_year TINYINT(1) NOT NULL COMMENT 'Whether it''s a leap year', 
235
    week_numbering_year INT NOT NULL COMMENT 'ISO-8601 week-numbering year.', 
236
    unix_time BIGINT NOT NULL COMMENT 'Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)', 
237
    INDEX date (date), 
238
    PRIMARY KEY(id)
239
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB
240
SQL;
241
242
        $this->addSql($sqlDateDimension);
243
244
        $this->addSql('ALTER TABLE user_group ADD CONSTRAINT FK_8F02BF9D57698A6A FOREIGN KEY (role) REFERENCES role (role) ON DELETE CASCADE');
245
        $this->addSql('ALTER TABLE user_group ADD CONSTRAINT FK_8F02BF9DB03A8386 FOREIGN KEY (created_by_id) REFERENCES user (id) ON DELETE SET NULL');
246
        $this->addSql('ALTER TABLE user_group ADD CONSTRAINT FK_8F02BF9D896DBBDE FOREIGN KEY (updated_by_id) REFERENCES user (id) ON DELETE SET NULL');
247
        $this->addSql('ALTER TABLE log_login ADD CONSTRAINT FK_8A76204DA76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE SET NULL');
248
        $this->addSql('ALTER TABLE api_key ADD CONSTRAINT FK_C912ED9DB03A8386 FOREIGN KEY (created_by_id) REFERENCES user (id) ON DELETE SET NULL');
249
        $this->addSql('ALTER TABLE api_key ADD CONSTRAINT FK_C912ED9D896DBBDE FOREIGN KEY (updated_by_id) REFERENCES user (id) ON DELETE SET NULL');
250
        $this->addSql('ALTER TABLE api_key_has_user_group ADD CONSTRAINT FK_E2D0E7F98BE312B3 FOREIGN KEY (api_key_id) REFERENCES api_key (id) ON DELETE CASCADE');
251
        $this->addSql('ALTER TABLE api_key_has_user_group ADD CONSTRAINT FK_E2D0E7F91ED93D47 FOREIGN KEY (user_group_id) REFERENCES user_group (id) ON DELETE CASCADE');
252
        $this->addSql('ALTER TABLE user ADD CONSTRAINT FK_8D93D649B03A8386 FOREIGN KEY (created_by_id) REFERENCES user (id) ON DELETE SET NULL');
253
        $this->addSql('ALTER TABLE user ADD CONSTRAINT FK_8D93D649896DBBDE FOREIGN KEY (updated_by_id) REFERENCES user (id) ON DELETE SET NULL');
254
        $this->addSql('ALTER TABLE user_has_user_group ADD CONSTRAINT FK_2C59957A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE');
255
        $this->addSql('ALTER TABLE user_has_user_group ADD CONSTRAINT FK_2C599571ED93D47 FOREIGN KEY (user_group_id) REFERENCES user_group (id) ON DELETE CASCADE');
256
        $this->addSql('ALTER TABLE role ADD CONSTRAINT FK_57698A6AB03A8386 FOREIGN KEY (created_by_id) REFERENCES user (id) ON DELETE SET NULL');
257
        $this->addSql('ALTER TABLE role ADD CONSTRAINT FK_57698A6A896DBBDE FOREIGN KEY (updated_by_id) REFERENCES user (id) ON DELETE SET NULL');
258
        $this->addSql('ALTER TABLE log_request ADD CONSTRAINT FK_35AB708A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE SET NULL');
259
        $this->addSql('ALTER TABLE log_request ADD CONSTRAINT FK_35AB7088BE312B3 FOREIGN KEY (api_key_id) REFERENCES api_key (id) ON DELETE SET NULL');
260
        $this->addSql('ALTER TABLE log_login_failure ADD CONSTRAINT FK_EDB4AF3A76ED395 FOREIGN KEY (user_id) REFERENCES user (id)');
261
    }
262
263
    /**
264
     * @noinspection PhpMissingParentCallCommonInspection
265
     *
266
     * @throws Exception
267
     */
268
    public function down(Schema $schema): void
269
    {
270
        // this down() migration is auto-generated, please modify it to your needs
271
        $this->abortIf(
272
            $this->connection->getDatabasePlatform()->getName() !== 'mysql',
273
            'Migration can only be executed safely on \'mysql\'.'
274
        );
275
276
        $this->addSql('ALTER TABLE api_key_has_user_group DROP FOREIGN KEY FK_E2D0E7F91ED93D47');
277
        $this->addSql('ALTER TABLE user_has_user_group DROP FOREIGN KEY FK_2C599571ED93D47');
278
        $this->addSql('ALTER TABLE api_key_has_user_group DROP FOREIGN KEY FK_E2D0E7F98BE312B3');
279
        $this->addSql('ALTER TABLE log_request DROP FOREIGN KEY FK_35AB7088BE312B3');
280
        $this->addSql('ALTER TABLE user_group DROP FOREIGN KEY FK_8F02BF9DB03A8386');
281
        $this->addSql('ALTER TABLE user_group DROP FOREIGN KEY FK_8F02BF9D896DBBDE');
282
        $this->addSql('ALTER TABLE log_login DROP FOREIGN KEY FK_8A76204DA76ED395');
283
        $this->addSql('ALTER TABLE api_key DROP FOREIGN KEY FK_C912ED9DB03A8386');
284
        $this->addSql('ALTER TABLE api_key DROP FOREIGN KEY FK_C912ED9D896DBBDE');
285
        $this->addSql('ALTER TABLE user DROP FOREIGN KEY FK_8D93D649B03A8386');
286
        $this->addSql('ALTER TABLE user DROP FOREIGN KEY FK_8D93D649896DBBDE');
287
        $this->addSql('ALTER TABLE user_has_user_group DROP FOREIGN KEY FK_2C59957A76ED395');
288
        $this->addSql('ALTER TABLE role DROP FOREIGN KEY FK_57698A6AB03A8386');
289
        $this->addSql('ALTER TABLE role DROP FOREIGN KEY FK_57698A6A896DBBDE');
290
        $this->addSql('ALTER TABLE log_request DROP FOREIGN KEY FK_35AB708A76ED395');
291
        $this->addSql('ALTER TABLE log_login_failure DROP FOREIGN KEY FK_EDB4AF3A76ED395');
292
        $this->addSql('ALTER TABLE user_group DROP FOREIGN KEY FK_8F02BF9D57698A6A');
293
        $this->addSql('DROP TABLE healthz');
294
        $this->addSql('DROP TABLE user_group');
295
        $this->addSql('DROP TABLE log_login');
296
        $this->addSql('DROP TABLE api_key');
297
        $this->addSql('DROP TABLE api_key_has_user_group');
298
        $this->addSql('DROP TABLE date_dimension');
299
        $this->addSql('DROP TABLE user');
300
        $this->addSql('DROP TABLE user_has_user_group');
301
        $this->addSql('DROP TABLE role');
302
        $this->addSql('DROP TABLE log_request');
303
        $this->addSql('DROP TABLE log_login_failure');
304
    }
305
}
306