]> git.immae.eu Git - github/wallabag/wallabag.git/blame - app/DoctrineMigrations/Version20160401000000.php
Fix initial migration when using custom table prefix
[github/wallabag/wallabag.git] / app / DoctrineMigrations / Version20160401000000.php
CommitLineData
18fb777b 1<?php
2
3namespace Application\Migrations;
4
5use Doctrine\DBAL\Migrations\AbstractMigration;
6use Doctrine\DBAL\Schema\Schema;
43e1711e
JB
7use Symfony\Component\DependencyInjection\ContainerAwareInterface;
8use Symfony\Component\DependencyInjection\ContainerInterface;
18fb777b 9
10/**
f4e7a0df 11 * Initial database structure.
18fb777b 12 */
43e1711e 13class Version20160401000000 extends AbstractMigration implements ContainerAwareInterface
18fb777b 14{
43e1711e
JB
15 /**
16 * @var ContainerInterface
17 */
18 private $container;
19
20 public function setContainer(ContainerInterface $container = null)
21 {
22 $this->container = $container;
23 }
24
18fb777b 25 /**
26 * @param Schema $schema
27 */
28 public function up(Schema $schema)
29 {
ad46f2fb 30 $this->skipIf($schema->hasTable($this->getTable('entry')), 'Database already initialized');
18fb777b 31
f1f2cf2b 32 $databaseTablePrefix = $this->container->getParameter('database_table_prefix');
33
18fb777b 34 switch ($this->connection->getDatabasePlatform()->getName()) {
35 case 'sqlite':
f1f2cf2b 36 $sql = <<<SQL
37CREATE TABLE ${databaseTablePrefix}craue_config_setting (name VARCHAR(255) NOT NULL, value VARCHAR(255) DEFAULT NULL, section VARCHAR(255) DEFAULT NULL, PRIMARY KEY(name));
38CREATE UNIQUE INDEX UNIQ_5D9649505E237E06 ON ${databaseTablePrefix}craue_config_setting (name);
39CREATE TABLE "${databaseTablePrefix}tagging_rule" (id INTEGER NOT NULL, config_id INTEGER DEFAULT NULL, rule VARCHAR(255) NOT NULL, tags CLOB NOT NULL, PRIMARY KEY(id), CONSTRAINT FK_2D9B3C5424DB0683 FOREIGN KEY (config_id) REFERENCES "${databaseTablePrefix}config" (id) NOT DEFERRABLE INITIALLY IMMEDIATE);
40CREATE INDEX IDX_2D9B3C5424DB0683 ON "${databaseTablePrefix}tagging_rule" (config_id);
41CREATE TABLE "${databaseTablePrefix}tag" (id INTEGER NOT NULL, label CLOB NOT NULL, slug VARCHAR(128) NOT NULL, PRIMARY KEY(id));
42CREATE UNIQUE INDEX UNIQ_4CA58A8C989D9B62 ON "${databaseTablePrefix}tag" (slug);
43CREATE TABLE "${databaseTablePrefix}entry" (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, title CLOB DEFAULT NULL, url CLOB DEFAULT NULL, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL, language CLOB DEFAULT NULL, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL, preview_picture CLOB DEFAULT NULL, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id), CONSTRAINT FK_F4D18282A76ED395 FOREIGN KEY (user_id) REFERENCES "${databaseTablePrefix}user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE);
44CREATE INDEX IDX_F4D18282A76ED395 ON "${databaseTablePrefix}entry" (user_id);
45CREATE TABLE ${databaseTablePrefix}entry_tag (entry_id INTEGER NOT NULL, tag_id INTEGER NOT NULL, PRIMARY KEY(entry_id, tag_id), CONSTRAINT FK_C9F0DD7CBA364942 FOREIGN KEY (entry_id) REFERENCES "${databaseTablePrefix}entry" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_C9F0DD7CBAD26311 FOREIGN KEY (tag_id) REFERENCES "${databaseTablePrefix}tag" (id) NOT DEFERRABLE INITIALLY IMMEDIATE);
46CREATE INDEX IDX_C9F0DD7CBA364942 ON ${databaseTablePrefix}entry_tag (entry_id);
47CREATE INDEX IDX_C9F0DD7CBAD26311 ON ${databaseTablePrefix}entry_tag (tag_id);
48CREATE TABLE "${databaseTablePrefix}config" (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, theme VARCHAR(255) NOT NULL, items_per_page INTEGER NOT NULL, language VARCHAR(255) NOT NULL, rss_token VARCHAR(255) DEFAULT NULL, rss_limit INTEGER DEFAULT NULL, reading_speed DOUBLE PRECISION DEFAULT NULL, PRIMARY KEY(id), CONSTRAINT FK_87E64C53A76ED395 FOREIGN KEY (user_id) REFERENCES "${databaseTablePrefix}user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE);
49CREATE UNIQUE INDEX UNIQ_87E64C53A76ED395 ON "${databaseTablePrefix}config" (user_id);
50CREATE TABLE ${databaseTablePrefix}oauth2_refresh_tokens (id INTEGER NOT NULL, client_id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, token VARCHAR(255) NOT NULL, expires_at INTEGER DEFAULT NULL, scope VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id), CONSTRAINT FK_20C9FB2419EB6921 FOREIGN KEY (client_id) REFERENCES ${databaseTablePrefix}oauth2_clients (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_20C9FB24A76ED395 FOREIGN KEY (user_id) REFERENCES "${databaseTablePrefix}user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE);
51CREATE UNIQUE INDEX UNIQ_20C9FB245F37A13B ON ${databaseTablePrefix}oauth2_refresh_tokens (token);
52CREATE INDEX IDX_20C9FB2419EB6921 ON ${databaseTablePrefix}oauth2_refresh_tokens (client_id);
53CREATE INDEX IDX_20C9FB24A76ED395 ON ${databaseTablePrefix}oauth2_refresh_tokens (user_id);
54CREATE TABLE ${databaseTablePrefix}oauth2_access_tokens (id INTEGER NOT NULL, client_id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, token VARCHAR(255) NOT NULL, expires_at INTEGER DEFAULT NULL, scope VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id), CONSTRAINT FK_368A420919EB6921 FOREIGN KEY (client_id) REFERENCES ${databaseTablePrefix}oauth2_clients (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_368A4209A76ED395 FOREIGN KEY (user_id) REFERENCES "${databaseTablePrefix}user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE);
55CREATE UNIQUE INDEX UNIQ_368A42095F37A13B ON ${databaseTablePrefix}oauth2_access_tokens (token);
56CREATE INDEX IDX_368A420919EB6921 ON ${databaseTablePrefix}oauth2_access_tokens (client_id);
57CREATE INDEX IDX_368A4209A76ED395 ON ${databaseTablePrefix}oauth2_access_tokens (user_id);
58CREATE TABLE ${databaseTablePrefix}oauth2_auth_codes (id INTEGER NOT NULL, client_id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, token VARCHAR(255) NOT NULL, redirect_uri CLOB NOT NULL, expires_at INTEGER DEFAULT NULL, scope VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id), CONSTRAINT FK_EE52E3FA19EB6921 FOREIGN KEY (client_id) REFERENCES ${databaseTablePrefix}oauth2_clients (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_EE52E3FAA76ED395 FOREIGN KEY (user_id) REFERENCES "${databaseTablePrefix}user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE);
59CREATE UNIQUE INDEX UNIQ_EE52E3FA5F37A13B ON ${databaseTablePrefix}oauth2_auth_codes (token);
60CREATE INDEX IDX_EE52E3FA19EB6921 ON ${databaseTablePrefix}oauth2_auth_codes (client_id);
61CREATE INDEX IDX_EE52E3FAA76ED395 ON ${databaseTablePrefix}oauth2_auth_codes (user_id);
62CREATE TABLE ${databaseTablePrefix}oauth2_clients (id INTEGER NOT NULL, random_id VARCHAR(255) NOT NULL, redirect_uris CLOB NOT NULL, secret VARCHAR(255) NOT NULL, allowed_grant_types CLOB NOT NULL, PRIMARY KEY(id));
63CREATE TABLE "${databaseTablePrefix}user" (id INTEGER NOT NULL, username VARCHAR(180) NOT NULL, username_canonical VARCHAR(180) NOT NULL, email VARCHAR(180) NOT NULL, email_canonical VARCHAR(180) NOT NULL, enabled BOOLEAN NOT NULL, salt VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, last_login DATETIME DEFAULT NULL, locked BOOLEAN NOT NULL, expired BOOLEAN NOT NULL, expires_at DATETIME DEFAULT NULL, confirmation_token VARCHAR(255) DEFAULT NULL, password_requested_at DATETIME DEFAULT NULL, roles CLOB NOT NULL, credentials_expired BOOLEAN NOT NULL, credentials_expire_at DATETIME DEFAULT NULL, name CLOB DEFAULT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, authCode INTEGER DEFAULT NULL, twoFactorAuthentication BOOLEAN NOT NULL, trusted CLOB DEFAULT NULL, PRIMARY KEY(id));
64CREATE UNIQUE INDEX UNIQ_1D63E7E592FC23A8 ON "${databaseTablePrefix}user" (username_canonical);
65CREATE UNIQUE INDEX UNIQ_1D63E7E5A0D96FBF ON "${databaseTablePrefix}user" (email_canonical);
66CREATE UNIQUE INDEX UNIQ_1D63E7E5C05FB297 ON "${databaseTablePrefix}user" (confirmation_token);
67CREATE TABLE ${databaseTablePrefix}annotation (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, entry_id INTEGER DEFAULT NULL, text CLOB NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, quote VARCHAR(255) NOT NULL, ranges CLOB NOT NULL, PRIMARY KEY(id), CONSTRAINT FK_A7AED006A76ED395 FOREIGN KEY (user_id) REFERENCES "${databaseTablePrefix}user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_A7AED006BA364942 FOREIGN KEY (entry_id) REFERENCES "${databaseTablePrefix}entry" (id) NOT DEFERRABLE INITIALLY IMMEDIATE);
68CREATE INDEX IDX_A7AED006A76ED395 ON ${databaseTablePrefix}annotation (user_id);
69CREATE INDEX IDX_A7AED006BA364942 ON ${databaseTablePrefix}annotation (entry_id);
18fb777b 70SQL
71 ;
72
73 foreach (explode("\n", $sql) as $query) {
74 $this->addSql($query);
75 }
76
77 break;
78 case 'mysql':
f1f2cf2b 79 $sql = <<<SQL
80CREATE TABLE ${databaseTablePrefix}craue_config_setting (name VARCHAR(255) NOT NULL, value VARCHAR(255) DEFAULT NULL, section VARCHAR(255) DEFAULT NULL, UNIQUE INDEX UNIQ_5D9649505E237E06 (name), PRIMARY KEY(name)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
81CREATE TABLE `${databaseTablePrefix}entry` (id INT AUTO_INCREMENT NOT NULL, user_id INT DEFAULT NULL, title LONGTEXT DEFAULT NULL, url LONGTEXT DEFAULT NULL, is_archived TINYINT(1) NOT NULL, is_starred TINYINT(1) NOT NULL, content LONGTEXT DEFAULT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype LONGTEXT DEFAULT NULL, language LONGTEXT DEFAULT NULL, reading_time INT DEFAULT NULL, domain_name LONGTEXT DEFAULT NULL, preview_picture LONGTEXT DEFAULT NULL, is_public TINYINT(1) DEFAULT '0', INDEX IDX_F4D18282A76ED395 (user_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
82CREATE TABLE ${databaseTablePrefix}entry_tag (entry_id INT NOT NULL, tag_id INT NOT NULL, INDEX IDX_C9F0DD7CBA364942 (entry_id), INDEX IDX_C9F0DD7CBAD26311 (tag_id), PRIMARY KEY(entry_id, tag_id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
83CREATE TABLE `${databaseTablePrefix}config` (id INT AUTO_INCREMENT NOT NULL, user_id INT DEFAULT NULL, theme VARCHAR(255) NOT NULL, items_per_page INT NOT NULL, language VARCHAR(255) NOT NULL, rss_token VARCHAR(255) DEFAULT NULL, rss_limit INT DEFAULT NULL, reading_speed DOUBLE PRECISION DEFAULT NULL, UNIQUE INDEX UNIQ_87E64C53A76ED395 (user_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
84CREATE TABLE `${databaseTablePrefix}tagging_rule` (id INT AUTO_INCREMENT NOT NULL, config_id INT DEFAULT NULL, rule VARCHAR(255) NOT NULL, tags LONGTEXT NOT NULL COMMENT '(DC2Type:simple_array)', INDEX IDX_2D9B3C5424DB0683 (config_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
85CREATE TABLE `${databaseTablePrefix}tag` (id INT AUTO_INCREMENT NOT NULL, `label` LONGTEXT NOT NULL, slug VARCHAR(128) NOT NULL, UNIQUE INDEX UNIQ_4CA58A8C989D9B62 (slug), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
86CREATE TABLE ${databaseTablePrefix}oauth2_clients (id INT AUTO_INCREMENT NOT NULL, random_id VARCHAR(255) NOT NULL, redirect_uris LONGTEXT NOT NULL COMMENT '(DC2Type:array)', secret VARCHAR(255) NOT NULL, allowed_grant_types LONGTEXT NOT NULL COMMENT '(DC2Type:array)', PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
87CREATE TABLE ${databaseTablePrefix}oauth2_access_tokens (id INT AUTO_INCREMENT NOT NULL, client_id INT NOT NULL, user_id INT DEFAULT NULL, token VARCHAR(255) NOT NULL, expires_at INT DEFAULT NULL, scope VARCHAR(255) DEFAULT NULL, UNIQUE INDEX UNIQ_368A42095F37A13B (token), INDEX IDX_368A420919EB6921 (client_id), INDEX IDX_368A4209A76ED395 (user_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
88CREATE TABLE ${databaseTablePrefix}oauth2_refresh_tokens (id INT AUTO_INCREMENT NOT NULL, client_id INT NOT NULL, user_id INT DEFAULT NULL, token VARCHAR(255) NOT NULL, expires_at INT DEFAULT NULL, scope VARCHAR(255) DEFAULT NULL, UNIQUE INDEX UNIQ_20C9FB245F37A13B (token), INDEX IDX_20C9FB2419EB6921 (client_id), INDEX IDX_20C9FB24A76ED395 (user_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
89CREATE TABLE ${databaseTablePrefix}oauth2_auth_codes (id INT AUTO_INCREMENT NOT NULL, client_id INT NOT NULL, user_id INT DEFAULT NULL, token VARCHAR(255) NOT NULL, redirect_uri LONGTEXT NOT NULL, expires_at INT DEFAULT NULL, scope VARCHAR(255) DEFAULT NULL, UNIQUE INDEX UNIQ_EE52E3FA5F37A13B (token), INDEX IDX_EE52E3FA19EB6921 (client_id), INDEX IDX_EE52E3FAA76ED395 (user_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
90CREATE TABLE `${databaseTablePrefix}user` (id INT AUTO_INCREMENT NOT NULL, username VARCHAR(180) NOT NULL, username_canonical VARCHAR(180) NOT NULL, email VARCHAR(180) NOT NULL, email_canonical VARCHAR(180) NOT NULL, enabled TINYINT(1) NOT NULL, salt VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, last_login DATETIME DEFAULT NULL, locked TINYINT(1) NOT NULL, expired TINYINT(1) NOT NULL, expires_at DATETIME DEFAULT NULL, confirmation_token VARCHAR(255) DEFAULT NULL, password_requested_at DATETIME DEFAULT NULL, roles LONGTEXT NOT NULL COMMENT '(DC2Type:array)', credentials_expired TINYINT(1) NOT NULL, credentials_expire_at DATETIME DEFAULT NULL, name LONGTEXT DEFAULT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, authCode INT DEFAULT NULL, twoFactorAuthentication TINYINT(1) NOT NULL, trusted LONGTEXT DEFAULT NULL COMMENT '(DC2Type:json_array)', UNIQUE INDEX UNIQ_1D63E7E592FC23A8 (username_canonical), UNIQUE INDEX UNIQ_1D63E7E5A0D96FBF (email_canonical), UNIQUE INDEX UNIQ_1D63E7E5C05FB297 (confirmation_token), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
91CREATE TABLE ${databaseTablePrefix}annotation (id INT AUTO_INCREMENT NOT NULL, user_id INT DEFAULT NULL, entry_id INT DEFAULT NULL, text LONGTEXT NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, quote VARCHAR(255) NOT NULL, ranges LONGTEXT NOT NULL COMMENT '(DC2Type:array)', INDEX IDX_A7AED006A76ED395 (user_id), INDEX IDX_A7AED006BA364942 (entry_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
92ALTER TABLE `${databaseTablePrefix}entry` ADD CONSTRAINT FK_F4D18282A76ED395 FOREIGN KEY (user_id) REFERENCES `${databaseTablePrefix}user` (id);
93ALTER TABLE ${databaseTablePrefix}entry_tag ADD CONSTRAINT FK_C9F0DD7CBA364942 FOREIGN KEY (entry_id) REFERENCES `${databaseTablePrefix}entry` (id);
94ALTER TABLE ${databaseTablePrefix}entry_tag ADD CONSTRAINT FK_C9F0DD7CBAD26311 FOREIGN KEY (tag_id) REFERENCES `${databaseTablePrefix}tag` (id);
95ALTER TABLE `${databaseTablePrefix}config` ADD CONSTRAINT FK_87E64C53A76ED395 FOREIGN KEY (user_id) REFERENCES `${databaseTablePrefix}user` (id);
96ALTER TABLE `${databaseTablePrefix}tagging_rule` ADD CONSTRAINT FK_2D9B3C5424DB0683 FOREIGN KEY (config_id) REFERENCES `${databaseTablePrefix}config` (id);
97ALTER TABLE ${databaseTablePrefix}oauth2_access_tokens ADD CONSTRAINT FK_368A420919EB6921 FOREIGN KEY (client_id) REFERENCES ${databaseTablePrefix}oauth2_clients (id);
98ALTER TABLE ${databaseTablePrefix}oauth2_access_tokens ADD CONSTRAINT FK_368A4209A76ED395 FOREIGN KEY (user_id) REFERENCES `${databaseTablePrefix}user` (id);
99ALTER TABLE ${databaseTablePrefix}oauth2_refresh_tokens ADD CONSTRAINT FK_20C9FB2419EB6921 FOREIGN KEY (client_id) REFERENCES ${databaseTablePrefix}oauth2_clients (id);
100ALTER TABLE ${databaseTablePrefix}oauth2_refresh_tokens ADD CONSTRAINT FK_20C9FB24A76ED395 FOREIGN KEY (user_id) REFERENCES `${databaseTablePrefix}user` (id);
101ALTER TABLE ${databaseTablePrefix}oauth2_auth_codes ADD CONSTRAINT FK_EE52E3FA19EB6921 FOREIGN KEY (client_id) REFERENCES ${databaseTablePrefix}oauth2_clients (id);
102ALTER TABLE ${databaseTablePrefix}oauth2_auth_codes ADD CONSTRAINT FK_EE52E3FAA76ED395 FOREIGN KEY (user_id) REFERENCES `${databaseTablePrefix}user` (id);
103ALTER TABLE ${databaseTablePrefix}annotation ADD CONSTRAINT FK_A7AED006A76ED395 FOREIGN KEY (user_id) REFERENCES `${databaseTablePrefix}user` (id);
104ALTER TABLE ${databaseTablePrefix}annotation ADD CONSTRAINT FK_A7AED006BA364942 FOREIGN KEY (entry_id) REFERENCES `${databaseTablePrefix}entry` (id);
18fb777b 105SQL
106 ;
107 foreach (explode("\n", $sql) as $query) {
108 $this->addSql($query);
109 }
110 break;
18fb777b 111 case 'postgresql':
f1f2cf2b 112 $sql = <<<SQL
113CREATE TABLE ${databaseTablePrefix}craue_config_setting (name VARCHAR(255) NOT NULL, value VARCHAR(255) DEFAULT NULL, section VARCHAR(255) DEFAULT NULL, PRIMARY KEY(name));
114CREATE UNIQUE INDEX UNIQ_5D9649505E237E06 ON ${databaseTablePrefix}craue_config_setting (name);
115CREATE TABLE "${databaseTablePrefix}entry" (id INT NOT NULL, user_id INT DEFAULT NULL, title TEXT DEFAULT NULL, url TEXT DEFAULT NULL, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content TEXT DEFAULT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, updated_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, mimetype TEXT DEFAULT NULL, language TEXT DEFAULT NULL, reading_time INT DEFAULT NULL, domain_name TEXT DEFAULT NULL, preview_picture TEXT DEFAULT NULL, is_public BOOLEAN DEFAULT 'false', PRIMARY KEY(id));
116CREATE INDEX IDX_F4D18282A76ED395 ON "${databaseTablePrefix}entry" (user_id);
117CREATE TABLE ${databaseTablePrefix}entry_tag (entry_id INT NOT NULL, tag_id INT NOT NULL, PRIMARY KEY(entry_id, tag_id));
118CREATE INDEX IDX_C9F0DD7CBA364942 ON ${databaseTablePrefix}entry_tag (entry_id);
119CREATE INDEX IDX_C9F0DD7CBAD26311 ON ${databaseTablePrefix}entry_tag (tag_id);
120CREATE TABLE "${databaseTablePrefix}config" (id INT NOT NULL, user_id INT DEFAULT NULL, theme VARCHAR(255) NOT NULL, items_per_page INT NOT NULL, language VARCHAR(255) NOT NULL, rss_token VARCHAR(255) DEFAULT NULL, rss_limit INT DEFAULT NULL, reading_speed DOUBLE PRECISION DEFAULT NULL, PRIMARY KEY(id));
121CREATE UNIQUE INDEX UNIQ_87E64C53A76ED395 ON "${databaseTablePrefix}config" (user_id);
122CREATE TABLE "${databaseTablePrefix}tagging_rule" (id INT NOT NULL, config_id INT DEFAULT NULL, rule VARCHAR(255) NOT NULL, tags TEXT NOT NULL, PRIMARY KEY(id));
123CREATE INDEX IDX_2D9B3C5424DB0683 ON "${databaseTablePrefix}tagging_rule" (config_id);
124COMMENT ON COLUMN "${databaseTablePrefix}tagging_rule".tags IS '(DC2Type:simple_array)';
125CREATE TABLE "${databaseTablePrefix}tag" (id INT NOT NULL, label TEXT NOT NULL, slug VARCHAR(128) NOT NULL, PRIMARY KEY(id));
126CREATE UNIQUE INDEX UNIQ_4CA58A8C989D9B62 ON "${databaseTablePrefix}tag" (slug);
127CREATE TABLE ${databaseTablePrefix}oauth2_clients (id INT NOT NULL, random_id VARCHAR(255) NOT NULL, redirect_uris TEXT NOT NULL, secret VARCHAR(255) NOT NULL, allowed_grant_types TEXT NOT NULL, PRIMARY KEY(id));
128COMMENT ON COLUMN ${databaseTablePrefix}oauth2_clients.redirect_uris IS '(DC2Type:array)';
129COMMENT ON COLUMN ${databaseTablePrefix}oauth2_clients.allowed_grant_types IS '(DC2Type:array)';
130CREATE TABLE ${databaseTablePrefix}oauth2_access_tokens (id INT NOT NULL, client_id INT NOT NULL, user_id INT DEFAULT NULL, token VARCHAR(255) NOT NULL, expires_at INT DEFAULT NULL, scope VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id));
131CREATE UNIQUE INDEX UNIQ_368A42095F37A13B ON ${databaseTablePrefix}oauth2_access_tokens (token);
132CREATE INDEX IDX_368A420919EB6921 ON ${databaseTablePrefix}oauth2_access_tokens (client_id);
133CREATE INDEX IDX_368A4209A76ED395 ON ${databaseTablePrefix}oauth2_access_tokens (user_id);
134CREATE TABLE ${databaseTablePrefix}oauth2_refresh_tokens (id INT NOT NULL, client_id INT NOT NULL, user_id INT DEFAULT NULL, token VARCHAR(255) NOT NULL, expires_at INT DEFAULT NULL, scope VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id));
135CREATE UNIQUE INDEX UNIQ_20C9FB245F37A13B ON ${databaseTablePrefix}oauth2_refresh_tokens (token);
136CREATE INDEX IDX_20C9FB2419EB6921 ON ${databaseTablePrefix}oauth2_refresh_tokens (client_id);
137CREATE INDEX IDX_20C9FB24A76ED395 ON ${databaseTablePrefix}oauth2_refresh_tokens (user_id);
138CREATE TABLE ${databaseTablePrefix}oauth2_auth_codes (id INT NOT NULL, client_id INT NOT NULL, user_id INT DEFAULT NULL, token VARCHAR(255) NOT NULL, redirect_uri TEXT NOT NULL, expires_at INT DEFAULT NULL, scope VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id));
139CREATE UNIQUE INDEX UNIQ_EE52E3FA5F37A13B ON ${databaseTablePrefix}oauth2_auth_codes (token);
140CREATE INDEX IDX_EE52E3FA19EB6921 ON ${databaseTablePrefix}oauth2_auth_codes (client_id);
141CREATE INDEX IDX_EE52E3FAA76ED395 ON ${databaseTablePrefix}oauth2_auth_codes (user_id);
142CREATE TABLE "${databaseTablePrefix}user" (id INT NOT NULL, username VARCHAR(180) NOT NULL, username_canonical VARCHAR(180) NOT NULL, email VARCHAR(180) NOT NULL, email_canonical VARCHAR(180) NOT NULL, enabled BOOLEAN NOT NULL, salt VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, last_login TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, locked BOOLEAN NOT NULL, expired BOOLEAN NOT NULL, expires_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, confirmation_token VARCHAR(255) DEFAULT NULL, password_requested_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, roles TEXT NOT NULL, credentials_expired BOOLEAN NOT NULL, credentials_expire_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, name TEXT DEFAULT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, updated_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, authCode INT DEFAULT NULL, twoFactorAuthentication BOOLEAN NOT NULL, trusted TEXT DEFAULT NULL, PRIMARY KEY(id));
143CREATE UNIQUE INDEX UNIQ_1D63E7E592FC23A8 ON "${databaseTablePrefix}user" (username_canonical);
144CREATE UNIQUE INDEX UNIQ_1D63E7E5A0D96FBF ON "${databaseTablePrefix}user" (email_canonical);
145CREATE UNIQUE INDEX UNIQ_1D63E7E5C05FB297 ON "${databaseTablePrefix}user" (confirmation_token);
146COMMENT ON COLUMN "${databaseTablePrefix}user".roles IS '(DC2Type:array)';
147COMMENT ON COLUMN "${databaseTablePrefix}user".trusted IS '(DC2Type:json_array)';
148CREATE TABLE ${databaseTablePrefix}annotation (id INT NOT NULL, user_id INT DEFAULT NULL, entry_id INT DEFAULT NULL, text TEXT NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, updated_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, quote VARCHAR(255) NOT NULL, ranges TEXT NOT NULL, PRIMARY KEY(id));
149CREATE INDEX IDX_A7AED006A76ED395 ON ${databaseTablePrefix}annotation (user_id);
150CREATE INDEX IDX_A7AED006BA364942 ON ${databaseTablePrefix}annotation (entry_id);
151COMMENT ON COLUMN ${databaseTablePrefix}annotation.ranges IS '(DC2Type:array)';
18fb777b 152CREATE SEQUENCE "entry_id_seq" INCREMENT BY 1 MINVALUE 1 START 1;
153CREATE SEQUENCE "config_id_seq" INCREMENT BY 1 MINVALUE 1 START 1;
154CREATE SEQUENCE "tagging_rule_id_seq" INCREMENT BY 1 MINVALUE 1 START 1;
155CREATE SEQUENCE "tag_id_seq" INCREMENT BY 1 MINVALUE 1 START 1;
156CREATE SEQUENCE oauth2_clients_id_seq INCREMENT BY 1 MINVALUE 1 START 1;
157CREATE SEQUENCE oauth2_access_tokens_id_seq INCREMENT BY 1 MINVALUE 1 START 1;
158CREATE SEQUENCE oauth2_refresh_tokens_id_seq INCREMENT BY 1 MINVALUE 1 START 1;
159CREATE SEQUENCE oauth2_auth_codes_id_seq INCREMENT BY 1 MINVALUE 1 START 1;
160CREATE SEQUENCE "user_id_seq" INCREMENT BY 1 MINVALUE 1 START 1;
161CREATE SEQUENCE annotation_id_seq INCREMENT BY 1 MINVALUE 1 START 1;
f1f2cf2b 162ALTER TABLE "${databaseTablePrefix}entry" ADD CONSTRAINT FK_F4D18282A76ED395 FOREIGN KEY (user_id) REFERENCES "${databaseTablePrefix}user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
163ALTER TABLE ${databaseTablePrefix}entry_tag ADD CONSTRAINT FK_C9F0DD7CBA364942 FOREIGN KEY (entry_id) REFERENCES "${databaseTablePrefix}entry" (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
164ALTER TABLE ${databaseTablePrefix}entry_tag ADD CONSTRAINT FK_C9F0DD7CBAD26311 FOREIGN KEY (tag_id) REFERENCES "${databaseTablePrefix}tag" (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
165ALTER TABLE "${databaseTablePrefix}config" ADD CONSTRAINT FK_87E64C53A76ED395 FOREIGN KEY (user_id) REFERENCES "${databaseTablePrefix}user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
166ALTER TABLE "${databaseTablePrefix}tagging_rule" ADD CONSTRAINT FK_2D9B3C5424DB0683 FOREIGN KEY (config_id) REFERENCES "${databaseTablePrefix}config" (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
167ALTER TABLE ${databaseTablePrefix}oauth2_access_tokens ADD CONSTRAINT FK_368A420919EB6921 FOREIGN KEY (client_id) REFERENCES ${databaseTablePrefix}oauth2_clients (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
168ALTER TABLE ${databaseTablePrefix}oauth2_access_tokens ADD CONSTRAINT FK_368A4209A76ED395 FOREIGN KEY (user_id) REFERENCES "${databaseTablePrefix}user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
169ALTER TABLE ${databaseTablePrefix}oauth2_refresh_tokens ADD CONSTRAINT FK_20C9FB2419EB6921 FOREIGN KEY (client_id) REFERENCES ${databaseTablePrefix}oauth2_clients (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
170ALTER TABLE ${databaseTablePrefix}oauth2_refresh_tokens ADD CONSTRAINT FK_20C9FB24A76ED395 FOREIGN KEY (user_id) REFERENCES "${databaseTablePrefix}user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
171ALTER TABLE ${databaseTablePrefix}oauth2_auth_codes ADD CONSTRAINT FK_EE52E3FA19EB6921 FOREIGN KEY (client_id) REFERENCES ${databaseTablePrefix}oauth2_clients (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
172ALTER TABLE ${databaseTablePrefix}oauth2_auth_codes ADD CONSTRAINT FK_EE52E3FAA76ED395 FOREIGN KEY (user_id) REFERENCES "${databaseTablePrefix}user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
173ALTER TABLE ${databaseTablePrefix}annotation ADD CONSTRAINT FK_A7AED006A76ED395 FOREIGN KEY (user_id) REFERENCES "${databaseTablePrefix}user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
174ALTER TABLE ${databaseTablePrefix}annotation ADD CONSTRAINT FK_A7AED006BA364942 FOREIGN KEY (entry_id) REFERENCES "${databaseTablePrefix}entry" (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
18fb777b 175SQL
176 ;
177 foreach (explode("\n", $sql) as $query) {
178 $this->addSql($query);
179 }
180 break;
181 }
182 }
183
184 /**
185 * @param Schema $schema
186 */
187 public function down(Schema $schema)
188 {
f1f2cf2b 189 $databaseTablePrefix = $this->container->getParameter('database_table_prefix');
190
191 $this->addSql("DROP TABLE ${databaseTablePrefix}craue_config_setting");
192 $this->addSql("DROP TABLE ${databaseTablePrefix}tagging_rule");
193 $this->addSql("DROP TABLE ${databaseTablePrefix}config");
194 $this->addSql("DROP TABLE ${databaseTablePrefix}entry");
195 $this->addSql("DROP TABLE ${databaseTablePrefix}entry_tag");
196 $this->addSql("DROP TABLE ${databaseTablePrefix}tag");
197 $this->addSql("DROP TABLE ${databaseTablePrefix}oauth2_refresh_tokens");
198 $this->addSql("DROP TABLE ${databaseTablePrefix}oauth2_access_tokens");
199 $this->addSql("DROP TABLE ${databaseTablePrefix}oauth2_clients");
200 $this->addSql("DROP TABLE ${databaseTablePrefix}oauth2_auth_codes");
201 $this->addSql("DROP TABLE ${databaseTablePrefix}user");
202 $this->addSql("DROP TABLE ${databaseTablePrefix}annotation");
18fb777b 203 }
43e1711e
JB
204
205 private function getTable($tableName)
206 {
207 return $this->container->getParameter('database_table_prefix') . $tableName;
208 }
18fb777b 209}