Skip to content
Snippets Groups Projects
Commit 88e3ce30 authored by Stan Hu's avatar Stan Hu Committed by Francisco Javier López
Browse files

Optimize API /groups/:id/projects by preloading associations

Closes #40308
parent c594659f
No related branches found
No related tags found
No related merge requests found
---
title: Optimize API /groups/:id/projects by preloading fork_networks table
merge_request:
author:
type: performance
Loading
Loading
@@ -172,6 +172,7 @@ module API
get ":id/projects" do
group = find_group!(params[:id])
projects = GroupProjectsFinder.new(group: group, current_user: current_user, params: project_finder_params).execute
projects = projects.preload(:fork_network, :forked_project_link, :project_feature, :project_group_links, :tags, :taggings, :group, :namespace)
projects = reorder_projects(projects)
entity = params[:simple] ? Entities::BasicProjectDetails : Entities::Project
present paginate(projects), with: entity, current_user: current_user
Loading
Loading
Loading
Loading
@@ -401,6 +401,20 @@ describe API::Groups do
 
expect(response).to have_gitlab_http_status(404)
end
it 'avoids N+1 queries' do
get api("/groups/#{group1.id}/projects", admin)
control_count = ActiveRecord::QueryRecorder.new do
get api("/groups/#{group1.id}/projects", admin)
end.count
create(:project, namespace: group1)
expect do
get api("/groups/#{group1.id}/projects", admin)
end.not_to exceed_query_limit(control_count)
end
end
 
context 'when using group path in URL' do
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment