demarches-normaliennes/app/tasks/maintenance/clean_invalid_procedure_presentation_task.rb

30 lines
1.1 KiB
Ruby

# frozen_string_literal: true
module Maintenance
# PR: 10774
# why: postgres does not support integer greater than ProcedurePresentation::PG_INTEGER_MAX_VALUE)
# it occures when user copypaste the dossier id twice (like missed copy paste,paste)
# once this huge integer is saved on procedure presentation, page with this filter can't be loaded
# when: run this migration when it appears in your maintenance tasks list, this file fix the data and we added some validations too
class CleanInvalidProcedurePresentationTask < MaintenanceTasks::Task
def collection
ProcedurePresentation.all
end
def process(element)
element.filters = element.filters.transform_values do |filters_by_status|
filters_by_status.reject do |filter|
filter.is_a?(Hash) &&
filter['column'] == 'id' &&
(filter['value']&.to_i&. >= ProcedurePresentation::PG_INTEGER_MAX_VALUE)
end
end
element.save
end
def count
# Optionally, define the number of rows that will be iterated over
# This is used to track the task's progress
end
end
end