kanbanworkflowstimelinescrumrubyroadmapproject-planningproject-managementopenprojectangularissue-trackerifcgantt-chartganttbug-trackerboardsbcf
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.
42 lines
1.2 KiB
42 lines
1.2 KiB
6 years ago
|
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
|