Add migration task to use stable_id in filters
This commit is contained in:
parent
9848dc2295
commit
a9a4f6e2a8
2 changed files with 46 additions and 1 deletions
|
@ -291,7 +291,8 @@ class ProcedurePresentation < ApplicationRecord
|
|||
end
|
||||
|
||||
def check_allowed_filter_columns
|
||||
filters.each do |_, columns|
|
||||
filters.each do |key, columns|
|
||||
return true if key == 'migrated'
|
||||
columns.each do |column|
|
||||
check_allowed_field(:filters, column)
|
||||
end
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
namespace :after_party do
|
||||
desc 'Deployment task: migrate_filters_to_use_stable_id'
|
||||
task migrate_filters_to_use_stable_id: :environment do
|
||||
puts "Running deploy task 'migrate_filters_to_use_stable_id'"
|
||||
|
||||
procedure_presentations = ProcedurePresentation.where("filters -> 'migrated' IS NULL")
|
||||
progress = ProgressReport.new(procedure_presentations.count)
|
||||
procedure_presentations.find_each do |procedure_presentation|
|
||||
filters = procedure_presentation.filters
|
||||
sort = procedure_presentation.sort
|
||||
|
||||
['tous', 'suivis', 'traites', 'a-suivre', 'archives'].each do |statut|
|
||||
filters[statut] = filters[statut].map do |filter|
|
||||
table, column, value = filter.values_at('table', 'column', 'value')
|
||||
if table && (table == 'type_de_champ' || table == 'type_de_champ_private')
|
||||
type_de_champ = TypeDeChamp.find_by(id: column)
|
||||
if type_de_champ
|
||||
column = type_de_champ.stable_id
|
||||
end
|
||||
end
|
||||
[table, column, value]
|
||||
end
|
||||
end
|
||||
|
||||
table, column = sort.values_at('table', 'column')
|
||||
if table && (table == 'type_de_champ' || table == 'type_de_champ_private')
|
||||
type_de_champ = TypeDeChamp.find_by(id: column)
|
||||
if type_de_champ
|
||||
sort['column'] = type_de_champ.stable_id
|
||||
end
|
||||
end
|
||||
|
||||
filters['migrated'] = true
|
||||
procedure_presentation.update_columns(filters: filters, sort: sort)
|
||||
progress.inc
|
||||
end
|
||||
progress.finish
|
||||
|
||||
# Update task as completed. If you remove the line below, the task will
|
||||
# run with every deploy (or every time you call after_party:run).
|
||||
AfterParty::TaskRecord
|
||||
.create version: AfterParty::TaskRecorder.new(__FILE__).timestamp
|
||||
end
|
||||
end
|
Loading…
Add table
Reference in a new issue