OpenProject is the leading open source project management software.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openproject/db/migrate/20190301122554_remove_hiera...

42 lines
1.2 KiB

require_relative './20180116065518_add_hierarchy_paths'
class RemoveHierarchyPaths < ActiveRecord::Migration[5.2]
def up
AddHierarchyPaths.new.migrate :down
# Set sort to id, asc where parent sort was used
Query
.where("sort_criteria LIKE '%parent%'")
.find_each do |query|
# Use update_column to ensure that value is saved regardless
# of the overall state of the query
query.update_column(:sort_criteria, query.sort_criteria.map { |criteria| map_parent_to_id(criteria) })
rescue StandardError => e
warn "Failed to migrate parent sort_criteria for query #{query.id}: #{e}"
end
end
def down
# Will fail to #rebuild_hierarchy_paths! unless restored to correct version
AddHierarchyPaths.new.migrate :up
# Set sort to parent, asc where query.show_hierarchies is set
# because that is what is implied by the frontend.
Query
.where(show_hierarchies: true)
.update_all(sort_criteria: [%w(parent asc)])
end
private
##
# Map parent sort_criteria to id asc.
def map_parent_to_id(criteria)
if criteria.first.to_s == 'parent'
%w[id asc]
else
criteria
end
end
end