summaryrefslogtreecommitdiff
path: root/db/migrate/20140416074002_add_index_on_iid.rb
diff options
context:
space:
mode:
Diffstat (limited to 'db/migrate/20140416074002_add_index_on_iid.rb')
-rw-r--r--db/migrate/20140416074002_add_index_on_iid.rb33
1 files changed, 0 insertions, 33 deletions
diff --git a/db/migrate/20140416074002_add_index_on_iid.rb b/db/migrate/20140416074002_add_index_on_iid.rb
deleted file mode 100644
index c7f707ca123..00000000000
--- a/db/migrate/20140416074002_add_index_on_iid.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-# rubocop:disable all
-class AddIndexOnIid < ActiveRecord::Migration[4.2]
- def change
- RemoveDuplicateIid.clean(Issue)
- RemoveDuplicateIid.clean(MergeRequest, 'target_project_id')
- RemoveDuplicateIid.clean(Milestone)
-
- add_index :issues, [:project_id, :iid], unique: true
- add_index :merge_requests, [:target_project_id, :iid], unique: true
- add_index :milestones, [:project_id, :iid], unique: true
- end
-end
-
-class RemoveDuplicateIid
- def self.clean(klass, project_field = 'project_id')
- duplicates = klass.find_by_sql("SELECT iid, #{project_field} FROM #{klass.table_name} GROUP BY #{project_field}, iid HAVING COUNT(*) > 1")
-
- duplicates.each do |duplicate|
- project_id = duplicate.send(project_field)
- iid = duplicate.iid
- items = klass.of_projects(project_id).where(iid: iid)
-
- if items.size > 1
- puts "Remove #{klass.name} duplicates for iid: #{iid} and project_id: #{project_id}"
- items.shift
- items.each do |item|
- item.destroy
- puts '.'
- end
- end
- end
- end
-end