From 33f542487a89da4a8edad934b82aae7484f70ca3 Mon Sep 17 00:00:00 2001 From: Rafael Bodill Date: Thu, 18 Sep 2014 22:02:26 +0300 Subject: Migrations support for PostgreSQL --- application/migrations/002_add_users.php | 93 ++++++++++++++++++++++---------- 1 file changed, 64 insertions(+), 29 deletions(-) (limited to 'application/migrations/002_add_users.php') diff --git a/application/migrations/002_add_users.php b/application/migrations/002_add_users.php index 5675c77e9..d74402263 100644 --- a/application/migrations/002_add_users.php +++ b/application/migrations/002_add_users.php @@ -5,42 +5,77 @@ class Migration_Add_users extends CI_Migration { public function up() { - $this->db->query(" - CREATE TABLE IF NOT EXISTS `users` ( - `id` int(8) UNSIGNED NOT NULL AUTO_INCREMENT, - `username` varchar(32) COLLATE ascii_general_ci NOT NULL, - `password` varchar(60) COLLATE ascii_general_ci NOT NULL, - `email` varchar(255) COLLATE ascii_general_ci NOT NULL, - PRIMARY KEY (`id`) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - "); + if ($this->db->dbdriver == 'postgre') + { + $this->db->query(' + CREATE TABLE IF NOT EXISTS "users" ( + "id" serial PRIMARY KEY, + "username" character varying(32) NOT NULL, + "password" character varying(60) NOT NULL, + "email" character varying(255) NOT NULL + ) + '); - $this->db->query(" - CREATE TABLE IF NOT EXISTS `ci_sessions` ( - `session_id` varchar(40) NOT NULL DEFAULT '0', - `ip_address` varchar(16) NOT NULL DEFAULT '0', - `user_agent` varchar(120) NOT NULL, - `last_activity` int(10) unsigned NOT NULL DEFAULT '0', - `user_data` text NOT NULL, - PRIMARY KEY (`session_id`), - KEY `last_activity_idx` (`last_activity`) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8; - "); + $this->db->query(' + CREATE TABLE IF NOT EXISTS "ci_sessions" ( + "session_id" character varying(40) NOT NULL DEFAULT 0, + "ip_address" character varying(16) NOT NULL DEFAULT 0, + "user_agent" character varying(120) NOT NULL, + "last_activity" integer NOT NULL DEFAULT 0, + "user_data" text NOT NULL, + PRIMARY KEY ("session_id") + ); + CREATE INDEX "ci_sessions_last_activity_idx" ON "ci_sessions" ("last_activity"); + '); - $this->db->query(" - ALTER TABLE `files` - ADD `user` INT(8) UNSIGNED NOT NULL DEFAULT '0', - ADD INDEX (`user`) - "); + $this->db->query(' + ALTER TABLE "files" ADD "user" integer NOT NULL DEFAULT 0; + CREATE INDEX "user_idx" ON "files" ("user"); + '); + } + else + { + $this->db->query(" + CREATE TABLE IF NOT EXISTS `users` ( + `id` int(8) UNSIGNED NOT NULL AUTO_INCREMENT, + `username` varchar(32) COLLATE ascii_general_ci NOT NULL, + `password` varchar(60) COLLATE ascii_general_ci NOT NULL, + `email` varchar(255) COLLATE ascii_general_ci NOT NULL, + PRIMARY KEY (`id`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + "); + + $this->db->query(" + CREATE TABLE IF NOT EXISTS `ci_sessions` ( + `session_id` varchar(40) NOT NULL DEFAULT '0', + `ip_address` varchar(16) NOT NULL DEFAULT '0', + `user_agent` varchar(120) NOT NULL, + `last_activity` int(10) unsigned NOT NULL DEFAULT '0', + `user_data` text NOT NULL, + PRIMARY KEY (`session_id`), + KEY `last_activity_idx` (`last_activity`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + "); + + $this->db->query(" + ALTER TABLE `files` + ADD `user` INT(8) UNSIGNED NOT NULL DEFAULT '0', + ADD INDEX (`user`) + "); + } } public function down() { $this->dbforge->drop_table('users'); $this->dbforge->drop_table('ci_sessions'); - $this->db->query(" - ALTER TABLE `files` - DROP `user` - "); + if ($this->db->dbdriver == 'postgre') + { + $this->db->query('ALTER TABLE "files" DROP "user"'); + } + else + { + $this->db->query('ALTER TABLE `files` DROP `user`'); + } } } -- cgit v1.2.3-24-g4f1b