correct(export): la creation d'archive pour un groupe d'instructeur, avec des filtres differents et identique doit etre consistante

This commit is contained in:
Martin 2022-10-21 16:55:42 +02:00 committed by mfo
parent cf51be85e0
commit 50c43f4819
2 changed files with 10 additions and 7 deletions

View file

@ -89,13 +89,12 @@ class Export < ApplicationRecord
.create_or_find_by(format: format,
time_span_type: time_span_type,
statut: statut,
key: generate_cache_key(groupe_instructeurs.map(&:id), procedure_presentation&.id))
key: generate_cache_key(groupe_instructeurs.map(&:id), procedure_presentation))
end
def self.find_for_groupe_instructeurs(groupe_instructeurs_ids, procedure_presentation)
exports = if procedure_presentation.present?
where(key: generate_cache_key(groupe_instructeurs_ids))
.or(where(key: generate_cache_key(groupe_instructeurs_ids, procedure_presentation.id)))
where(key: generate_cache_key(groupe_instructeurs_ids, procedure_presentation))
else
where(key: generate_cache_key(groupe_instructeurs_ids))
end
@ -121,9 +120,13 @@ class Export < ApplicationRecord
}
end
def self.generate_cache_key(groupe_instructeurs_ids, procedure_presentation_id = nil)
if procedure_presentation_id.present?
"#{groupe_instructeurs_ids.sort.join('-')}--#{procedure_presentation_id}"
def self.generate_cache_key(groupe_instructeurs_ids, procedure_presentation = nil)
if procedure_presentation.present?
[
groupe_instructeurs_ids.sort.join('-'),
procedure_presentation.id,
Digest::MD5.hexdigest(procedure_presentation.snapshot.slice('filters', 'sort').to_s)
].join('--')
else
groupe_instructeurs_ids.sort.join('-')
end

View file

@ -6,7 +6,7 @@ FactoryBot.define do
groupe_instructeurs { [association(:groupe_instructeur)] }
after(:build) do |export, _evaluator|
export.key = Export.generate_cache_key(export.groupe_instructeurs.map(&:id), export.procedure_presentation&.id)
export.key = Export.generate_cache_key(export.groupe_instructeurs.map(&:id), export.procedure_presentation)
end
end
end