52 lines
1.6 KiB
Ruby
52 lines
1.6 KiB
Ruby
require Rails.root.join("lib", "tasks", "task_helper")
|
|
|
|
namespace :pieces_justificatives do
|
|
desc <<~EOD
|
|
Migrate the PJ to champs for a single PROCEDURE_ID.
|
|
EOD
|
|
task migrate_procedure_to_champs: :environment do
|
|
procedure_id = ENV['PROCEDURE_ID']
|
|
procedure = Procedure.find(procedure_id)
|
|
|
|
service = PieceJustificativeToChampPieceJointeMigrationService.new
|
|
service.ensure_correct_storage_configuration!
|
|
|
|
progress = ProgressReport.new(service.number_of_champs_to_migrate(procedure))
|
|
|
|
service.convert_procedure_pjs_to_champ_pjs(procedure) do
|
|
progress.inc
|
|
end
|
|
|
|
progress.finish
|
|
end
|
|
|
|
desc <<~EOD
|
|
Migrate the PJ to champs for several procedures ids, from RANGE_START to RANGE_END.
|
|
EOD
|
|
task migrate_procedures_range_to_champs: :environment do
|
|
if ENV['RANGE_START'].nil? || ENV['RANGE_END'].nil?
|
|
fail "RANGE_START and RANGE_END must be specified"
|
|
end
|
|
procedures_range = ENV['RANGE_START']..ENV['RANGE_END']
|
|
|
|
service = PieceJustificativeToChampPieceJointeMigrationService.new
|
|
service.ensure_correct_storage_configuration!
|
|
procedures_to_migrate = service.procedures_with_pjs_in_range(procedures_range)
|
|
|
|
total_number_of_champs_to_migrate = procedures_to_migrate
|
|
.map { |p| service.number_of_champs_to_migrate(p) }
|
|
.sum
|
|
progress = ProgressReport.new(total_number_of_champs_to_migrate)
|
|
|
|
procedures_to_migrate.find_each do |procedure|
|
|
rake_puts ''
|
|
rake_puts "Migrating procedure #{procedure.id}…"
|
|
|
|
service.convert_procedure_pjs_to_champ_pjs(procedure) do
|
|
progress.inc
|
|
end
|
|
end
|
|
|
|
progress.finish
|
|
end
|
|
end
|