Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api/entities/project.rb')
-rw-r--r--lib/api/entities/project.rb19
1 files changed, 16 insertions, 3 deletions
diff --git a/lib/api/entities/project.rb b/lib/api/entities/project.rb
index 890b42ed8c8..b0e53ac3794 100644
--- a/lib/api/entities/project.rb
+++ b/lib/api/entities/project.rb
@@ -126,6 +126,10 @@ module API
expose :keep_latest_artifacts_available?, as: :keep_latest_artifact
# rubocop: disable CodeReuse/ActiveRecord
+ def self.preload_resource(project)
+ ActiveRecord::Associations::Preloader.new.preload(project, project_group_links: { group: :route })
+ end
+
def self.preload_relation(projects_relation, options = {})
# Preloading topics, should be done with using only `:topics`,
# as `:topics` are defined as: `has_many :topics, through: :taggings`
@@ -140,12 +144,21 @@ module API
.preload(project_group_links: { group: :route },
fork_network: :root_project,
fork_network_member: :forked_from_project,
- forked_from_project: [:route, :topics, :group, :project_feature, namespace: [:route, :owner]])
+ forked_from_project: [:route, :topics, :topics_acts_as_taggable, :group, :project_feature, namespace: [:route, :owner]])
end
# rubocop: enable CodeReuse/ActiveRecord
- def self.forks_counting_projects(projects_relation)
- projects_relation + projects_relation.map(&:forked_from_project).compact
+ def self.execute_batch_counting(projects_relation)
+ # Call the count methods on every project, so the BatchLoader would load them all at
+ # once when the entities are rendered
+ projects_relation.each(&:open_issues_count)
+ projects_relation.map(&:forked_from_project).compact.each(&:forks_count)
+
+ super
+ end
+
+ def self.repositories_for_preload(projects_relation)
+ super + projects_relation.map(&:forked_from_project).compact.map(&:repository)
end
end
end