tech(tache.recovery): ajoute une tache pour re-importer des dossiers venant d'un backup

Update app/lib/recovery/exporter.rb

Co-authored-by: Colin Darie <colin@darie.eu>
This commit is contained in:
Martin 2023-05-15 17:41:53 +02:00 committed by LeSim
parent 9d1d523cf6
commit f76e52cc97
8 changed files with 82 additions and 63 deletions

View file

@ -1,8 +1,10 @@
class DossierPreloader
DEFAULT_BATCH_SIZE = 2000
def initialize(dossiers)
def initialize(dossiers, includes_for_dossier: [], includes_for_etablissement: [])
@dossiers = dossiers
@includes_for_etablissement = includes_for_etablissement
@includes_for_dossier = includes_for_dossier
end
def in_batches(size = DEFAULT_BATCH_SIZE)
@ -35,7 +37,8 @@ class DossierPreloader
end
def load_dossiers(dossiers, pj_template: false)
to_include = [:geo_areas, piece_justificative_file_attachments: :blob, etablissement: :exercices]
to_include = @includes_for_dossier.dup
to_include << [piece_justificative_file_attachments: :blob]
if pj_template
to_include << { type_de_champ: { piece_justificative_template_attachment: :blob } }
@ -64,8 +67,9 @@ class DossierPreloader
end
def load_etablissements(champs)
to_include = @includes_for_etablissement.dup
champs_siret = champs.filter(&:siret?)
etablissements_by_id = Etablissement.includes(:exercices).where(id: champs_siret.map(&:etablissement_id).compact).index_by(&:id)
etablissements_by_id = Etablissement.includes(to_include).where(id: champs_siret.map(&:etablissement_id).compact).index_by(&:id)
champs_siret.each do |champ|
etablissement = etablissements_by_id[champ.etablissement_id]
champ.association(:etablissement).target = etablissement