Skip to content

Commit 32ee07a

Browse files
authored
Merge pull request #5 from dmstr/feature/postgres-support
Added support for postgres db
2 parents 97502e6 + 5d70439 commit 32ee07a

File tree

2 files changed

+57
-45
lines changed

2 files changed

+57
-45
lines changed

src/migrations/m200123_081049_convert_settings_to_contact_template.php

Lines changed: 45 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -15,57 +15,60 @@ class m200123_081049_convert_settings_to_contact_template extends Migration
1515
*/
1616
public function safeUp()
1717
{
18-
$schemaRows = (new Query())
19-
->select(['name' => new Expression('SUBSTR(`key`, 1, LOCATE(".", `key`) - 1)')])
20-
->from('{{%settings}}')
21-
->where(['section' => 'contact'])
22-
->groupBy('name')
23-
->all();
2418

25-
$schemaNames = ArrayHelper::getColumn($schemaRows, 'name');
26-
27-
28-
foreach ($schemaNames as $schemaName) {
29-
$settingRows = (new Query())
30-
->select([
31-
'value',
32-
'identifier' => new Expression('SUBSTR(`key`, LOCATE(".", `key`) + 1)'),
33-
'id'
34-
])
19+
if ($this->db->getDriverName() === 'mysql') {
20+
$schemaRows = (new Query())
21+
->select(['name' => new Expression('SUBSTR([[key]], 1, LOCATE(".", [[key]]) - 1)')])
3522
->from('{{%settings}}')
3623
->where(['section' => 'contact'])
37-
->andWhere("`key` LIKE '{$schemaName}.%'")
24+
->groupBy('name')
3825
->all();
3926

40-
$columns = [
41-
'name' => $schemaName,
42-
'created_at' => new Expression('NOW()'),
43-
'updated_at' => new Expression('NOW()')
44-
];
27+
$schemaNames = ArrayHelper::getColumn($schemaRows, 'name');
28+
29+
30+
foreach ($schemaNames as $schemaName) {
31+
$settingRows = (new Query())
32+
->select([
33+
'value',
34+
'identifier' => new Expression('SUBSTR([[key]], LOCATE(".", [[key]]) + 1)'),
35+
'id'
36+
])
37+
->from('{{%settings}}')
38+
->where(['section' => 'contact'])
39+
->andWhere("[[key]] LIKE '{$schemaName}.%'")
40+
->all();
4541

46-
$settingsIds = [];
42+
$columns = [
43+
'name' => $schemaName,
44+
'created_at' => new Expression('NOW()'),
45+
'updated_at' => new Expression('NOW()')
46+
];
4747

48-
foreach ($settingRows as $settingRow) {
49-
$value = $settingRow['value'];
50-
switch ($settingRow['identifier']) {
51-
case 'schema':
52-
$columns['form_schema'] = $value;
53-
break;
54-
case 'toEmail':
55-
$columns['to_email'] = $value;
56-
break;
57-
case 'fromEmail':
58-
$columns['from_email'] = $value;
59-
break;
60-
case 'subject':
61-
$columns['email_subject'] = $value;
62-
break;
48+
$settingsIds = [];
49+
50+
foreach ($settingRows as $settingRow) {
51+
$value = $settingRow['value'];
52+
switch ($settingRow['identifier']) {
53+
case 'schema':
54+
$columns['form_schema'] = $value;
55+
break;
56+
case 'toEmail':
57+
$columns['to_email'] = $value;
58+
break;
59+
case 'fromEmail':
60+
$columns['from_email'] = $value;
61+
break;
62+
case 'subject':
63+
$columns['email_subject'] = $value;
64+
break;
65+
}
66+
$settingsIds[] = $settingRow['id'];
6367
}
64-
$settingsIds[] = $settingRow['id'];
65-
}
6668

67-
$this->insert('{{%dmstr_contact_template}}', $columns);
68-
$this->delete('{{%settings}}', ['id' => $settingsIds]);
69+
$this->insert('{{%dmstr_contact_template}}', $columns);
70+
$this->delete('{{%settings}}', ['id' => $settingsIds]);
71+
}
6972
}
7073
}
7174

src/migrations/m200123_115704_alter_contact_log_table.php

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@ class m200123_115704_alter_contact_log_table extends Migration
1111

1212
public function up()
1313
{
14+
$dateTimeType = $this->db->getDriverName() === 'mysql' ? 'DATETIME' : 'TIMESTAMP';
15+
1416
$this->alterColumn('{{%dmstr_contact_log}}', 'json', 'TEXT NOT NULL');
15-
$this->alterColumn('{{%dmstr_contact_log}}', 'created_at', 'DATETIME NULL');
16-
$this->addColumn('{{%dmstr_contact_log}}', 'updated_at', 'DATETIME NULL AFTER created_at');
17+
$this->alterColumn('{{%dmstr_contact_log}}', 'created_at', $dateTimeType);
18+
$this->addColumn('{{%dmstr_contact_log}}', 'updated_at', $dateTimeType);
1719

1820
$schemaCluster = [];
1921

@@ -32,7 +34,14 @@ public function up()
3234
}
3335

3436
$this->renameColumn('{{%dmstr_contact_log}}', 'schema', 'contact_template_id');
35-
$this->alterColumn('{{%dmstr_contact_log}}', 'contact_template_id', 'INT(11) NOT NULL');
37+
38+
if ($this->db->getDriverName() === 'pgsql') {
39+
$columnType = $this->integer() . ' USING contact_template_id::integer';
40+
} else {
41+
$columnType = 'INT(11) NULL';
42+
}
43+
44+
$this->alterColumn('{{%dmstr_contact_log}}', 'contact_template_id', $columnType);
3645

3746
}
3847

0 commit comments

Comments
 (0)