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 22:00:22 -0600
committermultiple creatures <dev@multiple-creature.party>2019-12-11 22:00:22 -0600
commitdae7cda4abe135b3bb5fe9cfb3380721a2feb03e (patch)
tree4eda3ccfee17cb36a461d31cf74d266d80f6ebae /db/migrate
parent9a435494c2efdd2ca8fc7f5fa3dbb81bf88633a1 (diff)
move sharekeys & import metadata to own tables
Diffstat (limited to 'db/migrate')
-rw-r--r--db/migrate/20191211235208_create_normalized_statuses.rb2
-rw-r--r--db/migrate/20191212022020_create_sharekeys.rb19
-rw-r--r--db/migrate/20191212022653_create_imported_statuses.rb21
3 files changed, 41 insertions, 1 deletions
diff --git a/db/migrate/20191211235208_create_normalized_statuses.rb b/db/migrate/20191211235208_create_normalized_statuses.rb
index 9baaa3f62..d47c4feb4 100644
--- a/db/migrate/20191211235208_create_normalized_statuses.rb
+++ b/db/migrate/20191211235208_create_normalized_statuses.rb
@@ -1,7 +1,7 @@
 class CreateNormalizedStatuses < ActiveRecord::Migration[5.2]
   def up
     create_table :normalized_statuses do |t|
-      t.references :status, foreign_key: true
+      t.references :status, foreign_key: true, index: {unique: true}
       t.text :text
     end
 
diff --git a/db/migrate/20191212022020_create_sharekeys.rb b/db/migrate/20191212022020_create_sharekeys.rb
new file mode 100644
index 000000000..c0027babe
--- /dev/null
+++ b/db/migrate/20191212022020_create_sharekeys.rb
@@ -0,0 +1,19 @@
+class CreateSharekeys < ActiveRecord::Migration[5.2]
+  def up
+    create_table :sharekeys do |t|
+      t.references :status, foreign_key: true, index: {unique: true}
+      t.string :key
+    end
+
+    safety_assured do
+      execute 'INSERT INTO sharekeys (status_id, key) SELECT id, sharekey FROM statuses WHERE local AND sharekey IS NOT NULL'
+      remove_column :statuses, :sharekey
+    end
+  end
+
+  def down
+    add_column :statuses, :sharekey, :string
+    execute 'UPDATE statuses SET sharekey = s.key FROM (SELECT status_id, key FROM sharekeys) AS s WHERE statuses.id = s.id'
+    drop_table :sharekeys
+  end
+end
diff --git a/db/migrate/20191212022653_create_imported_statuses.rb b/db/migrate/20191212022653_create_imported_statuses.rb
new file mode 100644
index 000000000..3d7a9c99d
--- /dev/null
+++ b/db/migrate/20191212022653_create_imported_statuses.rb
@@ -0,0 +1,21 @@
+class CreateImportedStatuses < ActiveRecord::Migration[5.2]
+  def up
+    create_table :imported_statuses do |t|
+      t.references :status, foreign_key: true, index: {unique: true}
+      t.string :origin, index: {unique: true}
+    end
+
+    safety_assured { execute 'INSERT INTO imported_statuses (status_id, origin) SELECT id, origin FROM statuses WHERE imported' }
+    safety_assured do
+      remove_column :statuses, :imported
+      remove_column :statuses, :origin
+    end
+  end
+
+  def down
+    add_column :statuses, :imported, :boolean
+    add_column :statuses, :origin, :string, index: { unique: true }
+    execute 'UPDATE statuses SET imported = true, origin = s.origin FROM (SELECT status_id, origin FROM imported_statuses) AS s WHERE statuses.id = s.id'
+    drop_table :imported_statuses
+  end
+end