Migration for creating the rampage tag tables.
authorChuck Hagenbuch <chuck@horde.org>
Sun, 10 Jan 2010 19:35:15 +0000 (14:35 -0500)
committerChuck Hagenbuch <chuck@horde.org>
Tue, 12 Jan 2010 05:55:59 +0000 (00:55 -0500)
This won't work yet; we still need support for multi-column primary keys
indexes.

content/migrations/2_rampage_tag_tables.php [new file with mode: 0644]

diff --git a/content/migrations/2_rampage_tag_tables.php b/content/migrations/2_rampage_tag_tables.php
new file mode 100644 (file)
index 0000000..80cc215
--- /dev/null
@@ -0,0 +1,49 @@
+<?php
+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' => false));
+          $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('user_id', 'object_id', 'tag_id'), array('rampage_tagged_pkey', 'primary' => true));
+
+
+        // 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' => false));
+          $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('user_id', 'tag_id'), array('rampage_user_tag_stats_pkey', 'primary' => true));
+        $this->addIndex('rampage_user_tag_stats', array('tag_id'), array('name' => 'rampage_user_tag_stats_tag_id'));
+    }
+
+    public function down()
+    {
+        $this->dropTable('rampage_tags');
+        $this->dropTable('rampage_tagged');
+        $this->dropTable('rampage_tag_stats');
+        $this->dropTable('rampage_user_tag_stats');
+    }
+}