diff options
author | Kerri Miller <kerrizor@kerrizor.com> | 2019-08-06 16:03:16 -0700 |
---|---|---|
committer | Kerri Miller <kerrizor@kerrizor.com> | 2019-08-06 16:03:16 -0700 |
commit | 83f3d46112b57e1ecd8cc066edbf97c562fdb3ae (patch) | |
tree | 0192ccf10a79980e87456caf30ace438aa3e5ec4 | |
parent | 2d81a176f0e25cfa727eeee47accb0df33a9d792 (diff) | |
download | gitlab-ce-60449-reduce-gitaly-calls-when-rendering-commits-in-md.tar.gz |
Extract #records_per_parent to AbstractReferenceFilter60449-reduce-gitaly-calls-when-rendering-commits-in-md
-rw-r--r-- | lib/banzai/filter/abstract_reference_filter.rb | 18 | ||||
-rw-r--r-- | lib/banzai/filter/commit_reference_filter.rb | 22 | ||||
-rw-r--r-- | lib/banzai/filter/issuable_reference_filter.rb | 18 |
3 files changed, 24 insertions, 34 deletions
diff --git a/lib/banzai/filter/abstract_reference_filter.rb b/lib/banzai/filter/abstract_reference_filter.rb index 0224dd8fcd1..52af28ce8ec 100644 --- a/lib/banzai/filter/abstract_reference_filter.rb +++ b/lib/banzai/filter/abstract_reference_filter.rb @@ -337,6 +337,24 @@ module Banzai @current_project_namespace_path ||= project&.namespace&.full_path end + def records_per_parent + @_records_per_project ||= {} + + @_records_per_project[object_class.to_s.underscore] ||= begin + hash = Hash.new { |h, k| h[k] = {} } + + parent_per_reference.each do |path, parent| + record_ids = references_per_parent[path] + + parent_records(parent, record_ids).each do |record| + hash[parent][record_identifier(record)] = record + end + end + + hash + end + end + private def full_project_path(namespace, project_ref) diff --git a/lib/banzai/filter/commit_reference_filter.rb b/lib/banzai/filter/commit_reference_filter.rb index 3ab548e6a3c..e1d7b36b9a2 100644 --- a/lib/banzai/filter/commit_reference_filter.rb +++ b/lib/banzai/filter/commit_reference_filter.rb @@ -21,9 +21,9 @@ module Banzai def find_object(project, id) return unless project.is_a?(Project) && project.valid_repo? - _, record = records_per_parent[project].detect{|k,_v| Gitlab::Git.shas_eql?(k, id)} + _, record = records_per_parent[project].detect { |k, _v| Gitlab::Git.shas_eql?(k, id) } - record if record + record end def referenced_merge_request_commit_shas @@ -65,22 +65,8 @@ module Banzai private - def records_per_parent - @_records_per_project ||= {} - - @_records_per_project[object_class.to_s.underscore] ||= begin - hash = Hash.new { |h, k| h[k] = {} } - - parent_per_reference.each do |path, parent| - record_ids = references_per_parent[path] - - parent_records(parent, record_ids).each do |record| - hash[parent][record.id] = record - end - end - - hash - end + def record_identifier(record) + record.id end def parent_records(parent, ids) diff --git a/lib/banzai/filter/issuable_reference_filter.rb b/lib/banzai/filter/issuable_reference_filter.rb index 2963cba91e8..b91ba9f7256 100644 --- a/lib/banzai/filter/issuable_reference_filter.rb +++ b/lib/banzai/filter/issuable_reference_filter.rb @@ -3,22 +3,8 @@ module Banzai module Filter class IssuableReferenceFilter < AbstractReferenceFilter - def records_per_parent - @records_per_project ||= {} - - @records_per_project[object_class.to_s.underscore] ||= begin - hash = Hash.new { |h, k| h[k] = {} } - - parent_per_reference.each do |path, parent| - record_ids = references_per_parent[path] - - parent_records(parent, record_ids).each do |record| - hash[parent][record.iid.to_i] = record - end - end - - hash - end + def record_identifier(record) + record.iid.to_i end def find_object(parent, iid) |