about summary refs log tree commit diff
path: root/db/migrate
diff options
context:
space:
mode:
authormultiple creatures <dev@multiple-creature.party>2019-12-11 20:04:53 -0600
committermultiple creatures <dev@multiple-creature.party>2019-12-11 20:04:53 -0600
commit9a435494c2efdd2ca8fc7f5fa3dbb81bf88633a1 (patch)
tree376b3fa1570b7d0abf85e5580cc48eecdc407129 /db/migrate
parent3dc62460b00acea03d6010b08677031332399d2c (diff)
move normalized text into own table
Diffstat (limited to 'db/migrate')
-rw-r--r--db/migrate/20191118084127_migrate_to_new_search_impl.rb3
-rw-r--r--db/migrate/20191211235208_create_normalized_statuses.rb23
-rw-r--r--db/migrate/20191212002705_add_index_to_normalized_statuses.rb13
3 files changed, 37 insertions, 2 deletions
diff --git a/db/migrate/20191118084127_migrate_to_new_search_impl.rb b/db/migrate/20191118084127_migrate_to_new_search_impl.rb
index b068443ca..52a50af36 100644
--- a/db/migrate/20191118084127_migrate_to_new_search_impl.rb
+++ b/db/migrate/20191118084127_migrate_to_new_search_impl.rb
@@ -22,7 +22,6 @@ class MigrateToNewSearchImpl < ActiveRecord::Migration[5.2]
   end
 
   def down
-    #raise ActiveRecord::IrreversibleMigration
-    true
+    raise ActiveRecord::IrreversibleMigration
   end
 end
diff --git a/db/migrate/20191211235208_create_normalized_statuses.rb b/db/migrate/20191211235208_create_normalized_statuses.rb
new file mode 100644
index 000000000..9baaa3f62
--- /dev/null
+++ b/db/migrate/20191211235208_create_normalized_statuses.rb
@@ -0,0 +1,23 @@
+class CreateNormalizedStatuses < ActiveRecord::Migration[5.2]
+  def up
+    create_table :normalized_statuses do |t|
+      t.references :status, foreign_key: true
+      t.text :text
+    end
+
+    safety_assured do
+      remove_index :statuses, name: 'index_statuses_on_normalized_text_trgm'
+      execute 'INSERT INTO normalized_statuses (status_id, text) SELECT id, normalized_text FROM statuses'
+      remove_column :statuses, :normalized_text
+    end
+  end
+
+  def down
+    safety_assured do
+      execute 'UPDATE statuses SET normalized_text = s.text FROM (SELECT status_id, text FROM normalized_statuses) AS s WHERE statuses.id = s.id'
+      remove_index :normalized_statuses, name: 'index_statuses_on_normalized_text_trgm'
+      drop_table :normalized_statuses
+      add_column :statuses, :normalized_text, :text, null: false, default: ''
+    end
+  end
+end
diff --git a/db/migrate/20191212002705_add_index_to_normalized_statuses.rb b/db/migrate/20191212002705_add_index_to_normalized_statuses.rb
new file mode 100644
index 000000000..7a9dce39a
--- /dev/null
+++ b/db/migrate/20191212002705_add_index_to_normalized_statuses.rb
@@ -0,0 +1,13 @@
+class AddIndexToNormalizedStatuses < ActiveRecord::Migration[5.2]
+  disable_ddl_transaction!
+
+  def up
+    safety_assured do
+      execute 'CREATE INDEX CONCURRENTLY IF NOT EXISTS index_statuses_on_normalized_text_trgm ON normalized_statuses USING GIN (text gin_trgm_ops)'
+    end
+  end
+
+  def down
+    remove_index :normalized_statuses, name: 'index_statuses_on_normalized_text_trgm'
+  end
+end