Class: API::Entities::ProjectDetails

Inherits:
BasicProjectDetails show all
Defined in:
lib/api/entities/project_details.rb

Direct Known Subclasses

Project

Class Method Summary collapse

Methods inherited from BasicProjectDetails

postload_relation

Methods included from ProjectsRelationBuilder

#execute_batch_counting, #preload_groups, #preload_member_roles, #preload_relation, #preload_repository_cache, #prepare_relation, #projects_for_group_preload, #repositories_for_preload

Class Method Details

.execute_batch_counting(projects_relation) ⇒ Object

rubocop: enable CodeReuse/ActiveRecord



20
21
22
23
24
25
26
# File 'lib/api/entities/project_details.rb', line 20

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.filter_map(&:forked_from_project).each(&:forks_count)

  super
end

.preload_relation(projects_relation, _options = {}) ⇒ Object

rubocop: disable CodeReuse/ActiveRecord



11
12
13
14
15
16
17
# File 'lib/api/entities/project_details.rb', line 11

def self.preload_relation(projects_relation, _options = {})
  super(projects_relation).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] }])
end

.repositories_for_preload(projects_relation) ⇒ Object



28
29
30
# File 'lib/api/entities/project_details.rb', line 28

def self.repositories_for_preload(projects_relation)
  super + projects_relation.filter_map(&:forked_from_project).map(&:repository)
end