Skip to content
This repository was archived by the owner on May 1, 2019. It is now read-only.

Commit cabda7f

Browse files
committed
Enhancement: Extract Doctrine migration
1 parent 7b94b72 commit cabda7f

File tree

2 files changed

+125
-0
lines changed

2 files changed

+125
-0
lines changed

data/migrations/.gitkeep

Whitespace-only changes.
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
<?php
2+
3+
namespace ZfModulesMigrations;
4+
5+
use Doctrine\DBAL\Migrations\AbstractMigration;
6+
use Doctrine\DBAL\Schema\Schema;
7+
8+
class Version20150926125836 extends AbstractMigration
9+
{
10+
public function getDescription()
11+
{
12+
return 'This migration sets up the initial database structure';
13+
}
14+
15+
public function up(Schema $schema)
16+
{
17+
$this->addSql('
18+
CREATE TABLE IF NOT EXISTS `module` (
19+
`module_id` int(11) NOT NULL AUTO_INCREMENT,
20+
`name` varchar(255) NOT NULL,
21+
`description` text NOT NULL,
22+
`url` varchar(500) NOT NULL,
23+
`meta_data` blob,
24+
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
25+
`updated_at` timestamp NULL DEFAULT NULL,
26+
`photo_url` varchar(255) DEFAULT NULL,
27+
`owner` varchar(255) NOT NULL,
28+
PRIMARY KEY (`module_id`)
29+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
30+
');
31+
32+
$this->addSql('
33+
CREATE TABLE IF NOT EXISTS `module_admin` (
34+
`user_id` int(11) NOT NULL,
35+
`module_id` int(11) NOT NULL,
36+
PRIMARY KEY (`user_id`,`module_id`),
37+
KEY `module_id` (`module_id`),
38+
CONSTRAINT `module_admin_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE,
39+
CONSTRAINT `module_admin_ibfk_2` FOREIGN KEY (`module_id`) REFERENCES `module` (`module_id`) ON DELETE CASCADE
40+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
41+
');
42+
43+
$this->addSql('
44+
CREATE TABLE IF NOT EXISTS `user` (
45+
`user_id` int(11) NOT NULL AUTO_INCREMENT,
46+
`username` varchar(255) DEFAULT NULL,
47+
`email` varchar(255) DEFAULT NULL,
48+
`display_name` varchar(50) DEFAULT NULL,
49+
`password` varchar(128) NOT NULL,
50+
`photo_url` varchar(255) DEFAULT NULL,
51+
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
52+
`state` int(2) DEFAULT NULL,
53+
PRIMARY KEY (`user_id`),
54+
UNIQUE KEY `username` (`username`),
55+
UNIQUE KEY `email` (`email`)
56+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
57+
');
58+
59+
$this->addSql('
60+
CREATE TABLE IF NOT EXISTS `user_provider` (
61+
`user_id` int(11) NOT NULL,
62+
`provider_id` varchar(50) NOT NULL,
63+
`provider` varchar(255) NOT NULL,
64+
PRIMARY KEY (`user_id`,`provider_id`),
65+
UNIQUE KEY `provider_id` (`provider_id`,`provider`),
66+
CONSTRAINT `user_provider_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`)
67+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
68+
');
69+
}
70+
71+
public function down(Schema $schema)
72+
{
73+
$tables = [
74+
'module',
75+
'module_admin',
76+
'user',
77+
'user_provider',
78+
];
79+
80+
foreach ($tables as $table) {
81+
$schema->dropTable($table);
82+
}
83+
}
84+
85+
public function preUp(Schema $schema)
86+
{
87+
$this->pre();
88+
}
89+
90+
public function postUp(Schema $schema)
91+
{
92+
$this->post();
93+
}
94+
95+
public function preDown(Schema $schema)
96+
{
97+
$this->pre();
98+
}
99+
100+
public function postDown(Schema $schema)
101+
{
102+
$this->post();
103+
}
104+
105+
private function pre()
106+
{
107+
$this->addSql('SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT');
108+
$this->addSql('SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS');
109+
$this->addSql('SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION');
110+
$this->addSql('SET NAMES utf8');
111+
$this->addSql('SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0');
112+
$this->addSql("SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO'");
113+
$this->addSql('SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0');
114+
}
115+
116+
private function post()
117+
{
118+
$this->addSql('SET SQL_NOTES=@OLD_SQL_NOTES');
119+
$this->addSql('SET SQL_MODE=@OLD_SQL_MODE');
120+
$this->addSql('SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS');
121+
$this->addSql('SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT');
122+
$this->addSql('SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS');
123+
$this->addSql('SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION');
124+
}
125+
}

0 commit comments

Comments
 (0)