For some reason I don't have any schema_info tables for rampage/content, so check...
authorJan Schneider <jan@horde.org>
Thu, 27 Jan 2011 13:31:50 +0000 (14:31 +0100)
committerJan Schneider <jan@horde.org>
Thu, 27 Jan 2011 13:31:50 +0000 (14:31 +0100)
content/migration/1_rampage_base_tables.php
content/migration/2_rampage_tag_tables.php

index 1572e6c..482082a 100644 (file)
@@ -3,29 +3,32 @@ class RampageBaseTables extends Horde_Db_Migration_Base
 {
     public function up()
     {
-        // rampage_types
-        $t = $this->createTable('rampage_types', array('primaryKey' => 'type_id'));
-          $t->column('type_name', 'string', array('limit' => 255, 'null' => false));
-        $t->end();
-
-        $this->addIndex('rampage_types', array('type_name'), array('name' => 'rampage_objects_type_name', 'unique' => true));
-
-
-        // rampage_objects
-        $t = $this->createTable('rampage_objects', array('primaryKey' => 'object_id'));
-          $t->column('object_name', 'string',  array('limit' => 255, 'null' => false));
-          $t->column('type_id',     'integer', array('null' => false, 'unsigned' => true));
-        $t->end();
-
-        $this->addIndex('rampage_objects', array('type_id', 'object_name'), array('name' => 'rampage_objects_type_object_name', 'unique' => true));
-
-
-        // rampage_users
-        $t = $this->createTable('rampage_users', array('primaryKey' => 'user_id'));
-          $t->column('user_name', 'string', array('limit' => 255, 'null' => false));
-        $t->end();
-
-        $this->addIndex('rampage_users', array('user_name'), array('name' => 'rampage_users_user_name', 'unique' => true));
+        $tableList = $this->tables();
+
+        if (!in_array('rampage_types', $tableList)) {
+            // rampage_types
+            $t = $this->createTable('rampage_types', array('primaryKey' => 'type_id'));
+            $t->column('type_name', 'string', array('limit' => 255, 'null' => false));
+            $t->end();
+            $this->addIndex('rampage_types', array('type_name'), array('name' => 'rampage_objects_type_name', 'unique' => true));
+        }
+
+        if (!in_array('rampage_objects', $tableList)) {
+            // rampage_objects
+            $t = $this->createTable('rampage_objects', array('primaryKey' => 'object_id'));
+            $t->column('object_name', 'string',  array('limit' => 255, 'null' => false));
+            $t->column('type_id',     'integer', array('null' => false, 'unsigned' => true));
+            $t->end();
+            $this->addIndex('rampage_objects', array('type_id', 'object_name'), array('name' => 'rampage_objects_type_object_name', 'unique' => true));
+        }
+
+        if (!in_array('rampage_users', $tableList)) {
+            // rampage_users
+            $t = $this->createTable('rampage_users', array('primaryKey' => 'user_id'));
+            $t->column('user_name', 'string', array('limit' => 255, 'null' => false));
+            $t->end();
+            $this->addIndex('rampage_users', array('user_name'), array('name' => 'rampage_users_user_name', 'unique' => true));
+        }
     }
 
     public function down()
index 8f3d90d..b828230 100644 (file)
@@ -3,41 +3,45 @@ class RampageTagTables extends Horde_Db_Migration_Base
 {
     public function up()
     {
-        // rampage_tags
-        $t = $this->createTable('rampage_tags', array('primaryKey' => 'tag_id'));
-          $t->column('tag_name', 'string', array('limit' => 255, 'null' => false));
-        $t->end();
-
-        $this->addIndex('rampage_tags', array('tag_name'), array('name' => 'rampage_tags_tag_name', 'unique' => true));
-
-
-        // rampage_tagged
-        $t = $this->createTable('rampage_tagged', array('primaryKey' => array('user_id', 'object_id', 'tag_id')));
-          $t->column('user_id',   'integer', array('null' => false, 'unsigned' => true));
-          $t->column('object_id', 'integer', array('null' => false, 'unsigned' => true));
-          $t->column('tag_id',    'integer', array('null' => false, 'unsigned' => true));
-          $t->column('created',   'datetime');
-        $t->end();
-
-        $this->addIndex('rampage_tagged', array('object_id'), array('name' => 'rampage_tagged_object_id'));
-        $this->addIndex('rampage_tagged', array('tag_id'), array('name' => 'rampage_tagged_tag_id'));
-        $this->addIndex('rampage_tagged', array('created'), array('name' => 'rampage_tagged_created'));
-
-
-        // rampage_tag_stats
-        $t = $this->createTable('rampage_tag_stats', array('primaryKey' => 'tag_id'));
-          $t->column('count', 'integer', array('unsigned' => true));
-        $t->end();
-
-
-        // rampage_user_tag_stats
-        $t = $this->createTable('rampage_user_tag_stats', array('primaryKey' => array('user_id', 'tag_id')));
-          $t->column('user_id', 'integer', array('null' => false, 'unsigned' => true));
-          $t->column('tag_id',  'integer', array('null' => false, 'unsigned' => true));
-          $t->column('count',   'integer', array('unsigned' => true));
-        $t->end();
-
-        $this->addIndex('rampage_user_tag_stats', array('tag_id'), array('name' => 'rampage_user_tag_stats_tag_id'));
+        $tableList = $this->tables();
+
+        if (!in_array('rampage_tags', $tableList)) {
+            // rampage_tags
+            $t = $this->createTable('rampage_tags', array('primaryKey' => 'tag_id'));
+            $t->column('tag_name', 'string', array('limit' => 255, 'null' => false));
+            $t->end();
+            $this->addIndex('rampage_tags', array('tag_name'), array('name' => 'rampage_tags_tag_name', 'unique' => true));
+        }
+
+        if (!in_array('rampage_tagged', $tableList)) {
+            // rampage_tagged
+            $t = $this->createTable('rampage_tagged', array('primaryKey' => array('user_id', 'object_id', 'tag_id')));
+            $t->column('user_id',   'integer', array('null' => false, 'unsigned' => true));
+            $t->column('object_id', 'integer', array('null' => false, 'unsigned' => true));
+            $t->column('tag_id',    'integer', array('null' => false, 'unsigned' => true));
+            $t->column('created',   'datetime');
+            $t->end();
+            $this->addIndex('rampage_tagged', array('object_id'), array('name' => 'rampage_tagged_object_id'));
+            $this->addIndex('rampage_tagged', array('tag_id'), array('name' => 'rampage_tagged_tag_id'));
+            $this->addIndex('rampage_tagged', array('created'), array('name' => 'rampage_tagged_created'));
+        }
+
+        if (!in_array('rampage_tag_stats', $tableList)) {
+            // rampage_tag_stats
+            $t = $this->createTable('rampage_tag_stats', array('primaryKey' => 'tag_id'));
+            $t->column('count', 'integer', array('unsigned' => true));
+            $t->end();
+        }
+
+        if (!in_array('rampage_user_tag_stats', $tableList)) {
+            // rampage_user_tag_stats
+            $t = $this->createTable('rampage_user_tag_stats', array('primaryKey' => array('user_id', 'tag_id')));
+            $t->column('user_id', 'integer', array('null' => false, 'unsigned' => true));
+            $t->column('tag_id',  'integer', array('null' => false, 'unsigned' => true));
+            $t->column('count',   'integer', array('unsigned' => true));
+            $t->end();
+            $this->addIndex('rampage_user_tag_stats', array('tag_id'), array('name' => 'rampage_user_tag_stats_tag_id'));
+        }
     }
 
     public function down()