Completed
Push — fm-support ( 0de470...22a3ee )
by Konstantinos
04:53
created

GroupEventUnification   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 2
c 0
b 0
f 0
lcom 1
cbo 2
dl 0
loc 43
ccs 9
cts 9
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A up() 0 15 1
B down() 0 24 1
1
<?php
2
3
use Phinx\Migration\AbstractMigration;
4
5
class GroupEventUnification extends AbstractMigration
6
{
7 1
    public function up()
8
    {
9 1
        $this->table('messages')
10 1
            ->addColumn('event_type', 'string', array('limit' => 50, 'null' => true, 'comment' => 'The type of the event, NULL if it\'s a message'))
11 1
            ->update();
12
13 1
        $this->execute("ALTER TABLE messages MODIFY player_from int(10) UNSIGNED DEFAULT NULL");
14 1
        $this->execute("ALTER TABLE messages MODIFY status set('visible', 'hidden', 'deleted', 'reported') NOT NULL DEFAULT 'visible'");
15
16
        // MySQL doesn't properly set the default value for sets, so we have to
17
        // do it manually
18 1
        $this->execute("UPDATE messages SET status = 'visible' WHERE status = ''");
19
20 1
        $this->dropTable('group_events');
21 1
    }
22
23
    public function down()
24
    {
25
        $this->execute("
26
            # Dump of table group_events
27
            # ------------------------------------------------------------
28
29
            CREATE TABLE `group_events` (
30
              `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
31
              `group_to` int(10) unsigned NOT NULL COMMENT 'The ID of the group where the event occured',
32
              `event` text NOT NULL COMMENT 'The serialized data of the event',
33
              `type` varchar(50) NOT NULL COMMENT 'The type of the event',
34
              `timestamp` datetime NOT NULL COMMENT 'The timestamp of when the event took place',
35
              `status` set('visible','deleted') NOT NULL DEFAULT 'visible' COMMENT 'That status of the group event',
36
              PRIMARY KEY (`id`),
37
              KEY `group_to` (`group_to`),
38
              CONSTRAINT `group_event_ibfk_1` FOREIGN KEY (`group_to`) REFERENCES `groups` (`id`)
39
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
40
        ");
41
42
        $this->table('messages')->removeColumn('event_type');
43
44
        $this->execute("ALTER TABLE messages MODIFY status set('sent', 'hidden', 'deleted', 'reported') NOT NULL DEFAULT 'sent'");
45
        $this->execute("UPDATE messages SET status = 'sent' WHERE status = ''");
46
    }
47
}
48