Completed
Pull Request — master (#142)
by Ihor
15:10
created

Version20170402155913   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 147
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 0
Metric Value
dl 0
loc 147
rs 10
c 0
b 0
f 0
wmc 3
lcom 1
cbo 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
B up() 0 119 2
A down() 0 16 1
1
<?php
2
3
namespace Application\Migrations;
4
5
use Doctrine\DBAL\Migrations\AbstractMigration;
6
use Doctrine\DBAL\Schema\Schema;
7
8
/**
9
 * Auto-generated Migration: Please modify to your needs!
10
 */
11
class Version20170402155913 extends AbstractMigration
12
{
13
    /**
14
     * @param Schema $schema
15
     *
16
     * @throws
17
     */
18
    public function up(Schema $schema)
19
    {
20
        $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');
21
22
        $this->connection->beginTransaction();
23
        try{
24
            $this->addSql('
25
                SET @venue_philharmonic = 1;
26
                
27
                CREATE TEMPORARY TABLE `temp_venue_sector` LIKE `venue_sector`;
28
                
29
                INSERT INTO `temp_venue_sector` (`venue_id`, `title`, `slug`) VALUES
30
                (@venue_philharmonic, "Партер", "parterre"),
31
    	        (@venue_philharmonic, "Балкон", "balcony"),
32
    	        (@venue_philharmonic, "Лоджия Левая", "loggia-left"),
33
    	        (@venue_philharmonic, "Лоджия Правая", "loggia-right");
34
    	        
35
                INSERT INTO `venue_sector` (`venue_id`, `title`, `slug`)
36
                SELECT  `tvs`.`venue_id`, `tvs`.`title`, `tvs`.`slug`  FROM `temp_venue_sector` `tvs`
37
                LEFT JOIN `venue_sector` `vs` ON (`vs`.`venue_id` = `tvs`.`venue_id` AND `vs`.`slug` = `tvs`.`slug`) 
38
                WHERE (`vs`.`id` IS NULL AND `vs`.`slug` IS NULL);	        
39
            ');
40
41
            $this->addSql('
42
                CREATE TEMPORARY TABLE `autogenerated_values` (
43
                SELECT (`T_1`.`gv` + `T_2`.`gv` + `T_4`.`gv` + `T_8`.`gv` + `T_16`.`gv` + `T_32`.`gv`) `gv`
44
                FROM
45
                (SELECT 0 `gv` UNION ALL SELECT 1 `gv`) `T_1`
46
                    CROSS JOIN (SELECT 0 `gv` UNION ALL SELECT 2 `gv`) `T_2`
47
                    CROSS JOIN (SELECT 0 `gv` UNION ALL SELECT 4 `gv`) `T_4`
48
                    CROSS JOIN (SELECT 0 `gv` UNION ALL SELECT 8 `gv`) `T_8`
49
                    CROSS JOIN (SELECT 0 `gv` UNION ALL SELECT 16 `gv`) `T_16`
50
                    CROSS JOIN (SELECT 0 `gv` UNION ALL SELECT 32 `gv`) `T_32`
51
                LIMIT 1, 60);
52
            ');
53
54
            $this->addSql('
55
                SELECT @vs_id:=`vs`.`id` FROM `venue_sector` `vs` 
56
                WHERE `vs`.`venue_id` = @venue_philharmonic AND `vs`.`slug` = "parterre";          
57
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
58
                (SELECT 1, `gv`, @vs_id FROM `autogenerated_values` LIMIT 26);
59
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
60
                (SELECT 2, `gv`, @vs_id FROM `autogenerated_values` LIMIT 27);
61
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
62
                (SELECT 3, `gv`, @vs_id FROM `autogenerated_values` LIMIT 28);
63
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
64
                (SELECT 4, `gv`, @vs_id FROM `autogenerated_values` LIMIT 29);
65
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
66
                (SELECT 5, `gv`, @vs_id FROM `autogenerated_values` LIMIT 28);
67
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
68
                (SELECT 6, gv, @vs_id FROM `autogenerated_values` LIMIT 29);
69
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
70
                (SELECT 7, `gv`, @vs_id FROM `autogenerated_values` LIMIT 28);
71
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
72
                (SELECT 8, `gv`, @vs_id FROM `autogenerated_values` LIMIT 29);
73
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
74
                (SELECT 9, `gv`, @vs_id FROM `autogenerated_values` LIMIT 28);
75
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
76
                (SELECT 10, `gv`, @vs_id FROM `autogenerated_values` LIMIT 29);
77
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
78
                (SELECT 11, `gv`, @vs_id FROM `autogenerated_values` LIMIT 28);
79
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
80
                (SELECT 12, `gv`, @vs_id FROM `autogenerated_values` LIMIT 29);
81
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
82
                (SELECT 13, gv, @vs_id FROM `autogenerated_values` LIMIT 28);
83
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
84
                (SELECT 14, gv, @vs_id FROM `autogenerated_values` LIMIT 29);
85
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
86
                (SELECT 15, `gv`, @vs_id FROM `autogenerated_values` LIMIT 28);
87
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
88
                (SELECT 16, `gv`, @vs_id FROM `autogenerated_values` LIMIT 27);
89
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
90
                (SELECT 17, `gv`, @vs_id FROM `autogenerated_values` LIMIT 28);
91
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
92
                (SELECT 18, `gv`, @vs_id FROM `autogenerated_values` LIMIT 25);
93
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
94
                (SELECT 19, `gv`, @vs_id FROM `autogenerated_values` LIMIT 24);
95
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
96
                (SELECT 20, `gv`, @vs_id FROM `autogenerated_values` LIMIT 25);
97
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
98
                (SELECT 21, `gv`, @vs_id FROM `autogenerated_values` LIMIT 24);
99
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
100
                (SELECT 22, `gv`, @vs_id FROM `autogenerated_values` LIMIT 25);
101
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
102
                (SELECT 23, `gv`, @vs_id FROM `autogenerated_values` LIMIT 22);
103
104
                SELECT @vs_id:=`vs`.`id` FROM `venue_sector` `vs` 
105
                WHERE `vs`.`venue_id` = @venue_philharmonic AND `vs`.`slug` = "balcony";          
106
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
107
                (SELECT 1, `gv`, @vs_id FROM `autogenerated_values` LIMIT 30);
108
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
109
                (SELECT 2, `gv`, @vs_id FROM `autogenerated_values` LIMIT 30);
110
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
111
                (SELECT 3, `gv`, @vs_id FROM `autogenerated_values` LIMIT 30);
112
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
113
                (SELECT 4, `gv`, @vs_id FROM `autogenerated_values` LIMIT 30);
114
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
115
                (SELECT 5, `gv`, @vs_id FROM `autogenerated_values` LIMIT 30);
116
117
                SELECT @vs_id:=`vs`.`id` FROM `venue_sector` `vs` 
118
                WHERE `vs`.`venue_id` = @venue_philharmonic AND `vs`.`slug` = "loggia-left";          
119
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
120
                (SELECT 1, `gv`, @vs_id FROM `autogenerated_values` LIMIT 10);
121
122
                SELECT @vs_id:=`vs`.`id` FROM `venue_sector` `vs` 
123
                WHERE `vs`.`venue_id` = @venue_philharmonic AND `vs`.`slug` = "loggia-right";          
124
                INSERT INTO `seat` (`row`, `place`, `venueSector_id`) 
125
                (SELECT 1, `gv`, @vs_id FROM `autogenerated_values` LIMIT 10);
126
            ');
127
128
            $this->addSql('DROP TABLE IF EXISTS `autogenerated_values`');
129
            $this->addSql('DROP TABLE IF EXISTS `temp_venue_sector`');
130
131
            $this->connection->commit();
132
        } catch (\Exception $e) {
133
            $this->connection->rollBack();
134
            throw $e;
135
        }
136
    }
137
138
    /**
139
     * @param Schema $schema
140
     */
141
    public function down(Schema $schema)
142
    {
143
        $this->addSql('
144
            SET @venue_philharmonic = 1;
145
            
146
            DELETE FROM `seat` WHERE `venueSector_id` IN (
147
                SELECT `vs`.`id` FROM `venue_sector` `vs` WHERE `vs`.`venue_id` = @venue_philharmonic 
148
                AND `vs`.`slug` IN ("parterre", "balcony", "loggia-right", "loggia-left")
149
            );  
150
            
151
            DELETE FROM `venue_sector` WHERE `id` IN (  
152
                SELECT `vs`.`id` FROM `venue_sector` `vs` WHERE `vs`.`venue_id` = @venue_philharmonic 
153
                AND `vs`.`slug` IN ("parterre", "balcony", "loggia-right", "loggia-left")
154
            );
155
        ');
156
    }
157
}
158