From ca00c4953cd8c459b276a956d2a3a7e083a79d4f Mon Sep 17 00:00:00 2001
From: Olivier PEREZ <olivier@olivierperez.fr>
Date: Tue, 30 Dec 2014 18:15:29 +0100
Subject: [PATCH] migration: Create a script to migrate database from 0.8 to
 0.9

---
 from_0-8_to_0-9.sql | 136 ++++++++++++++++++++++++++++++++++++++++++++
 install.mysql.sql   |  27 +++++----
 2 files changed, 149 insertions(+), 14 deletions(-)
 create mode 100644 from_0-8_to_0-9.sql

diff --git a/from_0-8_to_0-9.sql b/from_0-8_to_0-9.sql
new file mode 100644
index 00000000..2b2ae23d
--- /dev/null
+++ b/from_0-8_to_0-9.sql
@@ -0,0 +1,136 @@
+-- --------------------------------------------------------
+
+--
+-- Table structure `poll`
+--
+
+CREATE TABLE IF NOT EXISTS `poll` (
+  `id`              CHAR(16)  NOT NULL,
+  `admin_id`        CHAR(24)  NOT NULL,
+  `title`           TEXT      NOT NULL,
+  `description`     TEXT,
+  `admin_name`      VARCHAR(64) DEFAULT NULL,
+  `admin_mail`      VARCHAR(128) DEFAULT NULL,
+  `creation_date`   TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `end_date`        TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `format`          VARCHAR(1) DEFAULT NULL,
+  `editable`        TINYINT(1) DEFAULT '0',
+  `receiveNewVotes` TINYINT(1) DEFAULT '0',
+  `active`          TINYINT(1) DEFAULT '1',
+  PRIMARY KEY (`id`)
+)
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure `slot`
+--
+
+CREATE TABLE IF NOT EXISTS `slot` (
+  `id`      INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `poll_id` CHAR(16)         NOT NULL,
+  `title`   TEXT,
+  `moments` TEXT,
+  PRIMARY KEY (`id`),
+  KEY `poll_id` (`poll_id`)
+)
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure `comment`
+--
+
+CREATE TABLE IF NOT EXISTS `comment` (
+  `id`      INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `poll_id` CHAR(16)         NOT NULL,
+  `name`    TEXT,
+  `comment` TEXT             NOT NULL,
+  PRIMARY KEY (`id`),
+  KEY `poll_id` (`poll_id`)
+)
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure `vote`
+--
+
+CREATE TABLE IF NOT EXISTS `vote` (
+  `id`      INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `poll_id` CHAR(16)         NOT NULL,
+  `name`    VARCHAR(64)      NOT NULL,
+  `choices` TEXT             NOT NULL,
+  PRIMARY KEY (`id`),
+  KEY `poll_id` (`poll_id`)
+)
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Migrate data from `sondage` to `poll`
+--
+
+INSERT INTO `poll`
+(`id`, `admin_id`, `title`, `description`, `admin_name`, `admin_mail`, `creation_date`, `end_date`, `format`, `editable`, `receiveNewVotes`, `active`)
+  SELECT
+    `id_sondage`,
+    `id_sondage_admin`,
+    `titre`,
+    `commentaires`,
+    `nom_admin`,
+    `mail_admin`,
+    `titre`,
+    `date_creation`,
+    `date_fin`,
+    SUBSTR(`format`, 1, 1) AS `format`,
+    CASE SUBSTR(`format`, 2, 1)
+    WHEN '+' THEN 1
+    ELSE 0 END             AS `editable`,
+    `mailsonde`,
+    CASE SUBSTR(`format`, 2, 1)
+    WHEN '-' THEN 0
+    ELSE 1 END             AS `active`
+  FROM sondage;
+
+-- --------------------------------------------------------
+
+--
+-- Migrate data from `sujet_studs` to `slot`
+--
+
+-- TODO Migrate this, is not so simple
+/*INSERT INTO `slot`
+(`poll_id`, `title`, `moments`)
+    SELECT `id_sondage`,
+      FROM `user_studs`;*/
+
+-- --------------------------------------------------------
+
+--
+-- Migrate data from `comments` to `comment`
+--
+
+INSERT INTO `comment`
+(`poll_id`, `name`, `comment`)
+  SELECT `id_sondage`, `usercomment`, `comment`
+  FROM `comments`;
+
+-- --------------------------------------------------------
+
+--
+-- Migrate data from `user_studs` to `vote`
+--
+
+INSERT INTO `vote`
+(`poll_id`, `name`, `choices`)
+  SELECT `id_sondage`, `nom`, REPLACE(REPLACE(REPLACE(`reponses`, '1', 'X'), '2', '1'), 'X', 2)
+  FROM `user_studs`;
diff --git a/install.mysql.sql b/install.mysql.sql
index 63a8a6db..aa0354cf 100644
--- a/install.mysql.sql
+++ b/install.mysql.sql
@@ -19,8 +19,8 @@ CREATE TABLE IF NOT EXISTS `poll` (
   `active`          TINYINT(1) DEFAULT '1',
   PRIMARY KEY (`id`)
 )
-  ENGINE =InnoDB
-  DEFAULT CHARSET =utf8;
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
 
 -- --------------------------------------------------------
 
@@ -36,8 +36,8 @@ CREATE TABLE IF NOT EXISTS `slot` (
   PRIMARY KEY (`id`),
   KEY `poll_id` (`poll_id`)
 )
-  ENGINE =InnoDB
-  DEFAULT CHARSET =utf8;
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
 
 -- --------------------------------------------------------
 
@@ -53,8 +53,8 @@ CREATE TABLE IF NOT EXISTS `comment` (
   PRIMARY KEY (`id`),
   KEY `poll_id` (`poll_id`)
 )
-  ENGINE =InnoDB
-  DEFAULT CHARSET =utf8;
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
 
 -- --------------------------------------------------------
 
@@ -70,9 +70,8 @@ CREATE TABLE IF NOT EXISTS `vote` (
   PRIMARY KEY (`id`),
   KEY `poll_id` (`poll_id`)
 )
-  ENGINE =InnoDB
-  DEFAULT CHARSET =utf8
-  AUTO_INCREMENT =160284;
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
 
 
 --
@@ -101,13 +100,13 @@ INSERT INTO `slot` (`poll_id`, `title`, `moments`) VALUES
 
 INSERT INTO `vote` (`name`, `poll_id`, `choices`) VALUES
   ('marcel', 'aqg259dth55iuhwm', '02202222'),
-  ('paul',   'aqg259dth55iuhwm', '20220202'),
+  ('paul', 'aqg259dth55iuhwm', '20220202'),
   ('sophie', 'aqg259dth55iuhwm', '22202200'),
   ('barack', 'aqg259dth55iuhwm', '02200000'),
-  ('takashi','aqg259dth55iuhwm', '00002202'),
+  ('takashi', 'aqg259dth55iuhwm', '00002202'),
   ('albert', 'aqg259dth55iuhwm', '20202200'),
   ('alfred', 'aqg259dth55iuhwm', '02200200'),
-  ('marcs',  'aqg259dth55iuhwm', '02000020'),
-  ('laure',  'aqg259dth55iuhwm', '00220000'),
-  ('benda',  'aqg259dth55iuhwm', '22022022'),
+  ('marcs', 'aqg259dth55iuhwm', '02000020'),
+  ('laure', 'aqg259dth55iuhwm', '00220000'),
+  ('benda', 'aqg259dth55iuhwm', '22022022'),
   ('albert', 'aqg259dth55iuhwm', '22222200');
-- 
GitLab