98bb435f42
Migrations shouldn't fail RuboCop checks - especially lint checks, such as the nested method check. To avoid changing code in existing migrations, add the magic comment to the top of each of them to skip that file.
22 lines
1.1 KiB
Ruby
22 lines
1.1 KiB
Ruby
# rubocop:disable all
|
|
class FixNamespaceDuplication < ActiveRecord::Migration
|
|
def up
|
|
#fixes path duplication
|
|
select_all('SELECT MAX(id) max, COUNT(id) cnt, path FROM namespaces GROUP BY path HAVING COUNT(id) > 1').each do |nms|
|
|
bad_nms_ids = select_all("SELECT id FROM namespaces WHERE path = '#{nms['path']}' AND id <> #{nms['max']}").map{|x| x["id"]}
|
|
execute("UPDATE projects SET namespace_id = #{nms["max"]} WHERE namespace_id IN(#{bad_nms_ids.join(', ')})")
|
|
execute("DELETE FROM namespaces WHERE id IN(#{bad_nms_ids.join(', ')})")
|
|
end
|
|
|
|
#fixes name duplication
|
|
select_all('SELECT MAX(id) max, COUNT(id) cnt, name FROM namespaces GROUP BY name HAVING COUNT(id) > 1').each do |nms|
|
|
bad_nms_ids = select_all("SELECT id FROM namespaces WHERE name = '#{nms['name']}' AND id <> #{nms['max']}").map{|x| x["id"]}
|
|
execute("UPDATE projects SET namespace_id = #{nms["max"]} WHERE namespace_id IN(#{bad_nms_ids.join(', ')})")
|
|
execute("DELETE FROM namespaces WHERE id IN(#{bad_nms_ids.join(', ')})")
|
|
end
|
|
end
|
|
|
|
def down
|
|
# not implemented
|
|
end
|
|
end
|