Class: API::Entities::BasicProjectDetails
- Inherits:
-
ProjectIdentity
- Object
- Grape::Entity
- ProjectIdentity
- API::Entities::BasicProjectDetails
- Extended by:
- ProjectsRelationBuilder
- Includes:
- Gitlab::Utils::StrongMemoize
- Defined in:
- lib/api/entities/basic_project_details.rb
Direct Known Subclasses
Class Method Summary collapse
-
.execute_batch_counting(projects_relation) ⇒ Object
rubocop: enable CodeReuse/ActiveRecord.
- .postload_relation(projects_relation, options = {}) ⇒ Object
-
.preload_relation(projects_relation, options = {}) ⇒ Object
rubocop: disable CodeReuse/ActiveRecord.
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
61 62 63 64 65 66 67 68 69 |
# File 'lib/api/entities/basic_project_details.rb', line 61 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(&:forks_count) projects_relation.each(&:self_or_ancestors_archived?) super end |
.postload_relation(projects_relation, options = {}) ⇒ Object
71 |
# File 'lib/api/entities/basic_project_details.rb', line 71 def self.postload_relation(projects_relation, = {}) end |
.preload_relation(projects_relation, options = {}) ⇒ Object
rubocop: disable CodeReuse/ActiveRecord
49 50 51 52 53 54 55 56 57 58 |
# File 'lib/api/entities/basic_project_details.rb', line 49 def self.preload_relation(projects_relation, = {}) # Preloading topics, should be done with using only `:topics`, # as `:topics` are defined as: `has_many :topics, through: :project_topics` # N+1 is solved then by using `subject.topics.map(&:name)` # MR describing the solution: https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/20555 projects_relation.preload(:project_feature, :route) .preload(:import_state, :topics) .preload(:auto_devops) .preload(namespace: [:route, :owner]) end |