summaryrefslogtreecommitdiff
path: root/db/migrate/20161202152031_remove_duplicates_from_routes.rb
diff options
context:
space:
mode:
Diffstat (limited to 'db/migrate/20161202152031_remove_duplicates_from_routes.rb')
-rw-r--r--db/migrate/20161202152031_remove_duplicates_from_routes.rb28
1 files changed, 28 insertions, 0 deletions
diff --git a/db/migrate/20161202152031_remove_duplicates_from_routes.rb b/db/migrate/20161202152031_remove_duplicates_from_routes.rb
new file mode 100644
index 00000000000..510796e05f2
--- /dev/null
+++ b/db/migrate/20161202152031_remove_duplicates_from_routes.rb
@@ -0,0 +1,28 @@
+# See http://doc.gitlab.com/ce/development/migration_style_guide.html
+# for more information on how to write migrations for GitLab.
+
+class RemoveDuplicatesFromRoutes < ActiveRecord::Migration
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ select_all("SELECT path FROM #{quote_table_name(:routes)} GROUP BY path HAVING COUNT(*) > 1").each do |row|
+ path = connection.quote(row['path'])
+ execute(%Q{
+ DELETE FROM #{quote_table_name(:routes)}
+ WHERE path = #{path}
+ AND id != (
+ SELECT id FROM (
+ SELECT max(id) AS id
+ FROM #{quote_table_name(:routes)}
+ WHERE path = #{path}
+ ) max_ids
+ )
+ })
+ end
+ end
+
+ def down
+ end
+end