fetch all exports at once by groupe_instructeurs_ids

This commit is contained in:
simon lehericey 2021-04-07 09:43:55 +02:00
parent 951d4c0025
commit 8b73d8804c
4 changed files with 13 additions and 13 deletions

View file

@ -220,10 +220,7 @@ module Instructeurs
end
def assign_exports
groupe_instructeurs_for_procedure = current_instructeur.groupe_instructeurs.where(procedure: procedure)
@xlsx_export = Export.find_for_format_and_groupe_instructeurs(:xlsx, groupe_instructeurs_for_procedure)
@csv_export = Export.find_for_format_and_groupe_instructeurs(:csv, groupe_instructeurs_for_procedure)
@ods_export = Export.find_for_format_and_groupe_instructeurs(:ods, groupe_instructeurs_for_procedure)
@xlsx_export, @csv_export, @ods_export = Export.find_for_groupe_instructeurs(groupe_instructeur_ids)
end
def assign_to

View file

@ -51,15 +51,18 @@ class Export < ApplicationRecord
def self.find_or_create_export(format, groupe_instructeurs)
create_with(groupe_instructeurs: groupe_instructeurs)
.create_or_find_by(format: format, key: generate_cache_key(groupe_instructeurs))
.create_or_find_by(format: format, key: generate_cache_key(groupe_instructeurs.map(&:id)))
end
def self.find_for_format_and_groupe_instructeurs(format, groupe_instructeurs)
find_by(format: format, key: generate_cache_key(groupe_instructeurs))
def self.find_for_groupe_instructeurs(groupe_instructeurs_ids)
exports = where(key: generate_cache_key(groupe_instructeurs_ids))
['xlsx', 'csv', 'ods']
.map { |format| exports.find { |export| export.format == format } }
end
def self.generate_cache_key(groupe_instructeurs)
groupe_instructeurs.map(&:id).sort.join('-')
def self.generate_cache_key(groupe_instructeurs_ids)
groupe_instructeurs_ids.sort.join('-')
end
private