about summary refs log tree commit diff
path: root/db
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2019-01-06 23:53:46 +0100
committerGitHub <noreply@github.com>2019-01-06 23:53:46 +0100
commit0e989a5b8f98f6c607fc9a727910e4e693bf8abd (patch)
tree49e41bfa92b9a1d637f89828e99614dc3bb5f095 /db
parent5dbe1865851923f27528248726a7170298fa3f2e (diff)
Fix unique violation in downcase custom emoji domain migration (#9733)
Fix #9727
Diffstat (limited to 'db')
-rw-r--r--db/migrate/20181207011115_downcase_custom_emoji_domains.rb10
1 files changed, 9 insertions, 1 deletions
diff --git a/db/migrate/20181207011115_downcase_custom_emoji_domains.rb b/db/migrate/20181207011115_downcase_custom_emoji_domains.rb
index c9db3800d..1fce2cb37 100644
--- a/db/migrate/20181207011115_downcase_custom_emoji_domains.rb
+++ b/db/migrate/20181207011115_downcase_custom_emoji_domains.rb
@@ -1,7 +1,15 @@
 class DowncaseCustomEmojiDomains < ActiveRecord::Migration[5.2]
   disable_ddl_transaction!
 
-  def change
+  def up
+    duplicates = CustomEmoji.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM custom_emojis GROUP BY lower(domain) HAVING count(*) > 1').to_hash
+
+    duplicates.each do |row|
+      CustomEmoji.where(id: row['ids'].split(',')[0...-1]).destroy_all
+    end
+
     CustomEmoji.in_batches.update_all('domain = lower(domain)')
   end
+
+  def down; end
 end