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:
-rw-r--r--lib/api/pipeline_schedules.rb2
-rw-r--r--spec/requests/api/pipeline_schedules_spec.rb12
2 files changed, 13 insertions, 1 deletions
diff --git a/lib/api/pipeline_schedules.rb b/lib/api/pipeline_schedules.rb
index 2319ff639e5..9429306fe20 100644
--- a/lib/api/pipeline_schedules.rb
+++ b/lib/api/pipeline_schedules.rb
@@ -17,7 +17,7 @@ module API
get ':id/pipeline_schedules' do
authorize! :read_pipeline_schedule, user_project
- pipeline_schedules = user_project.pipeline_schedules
+ pipeline_schedules = user_project.pipeline_schedules.preload(:pipelines)
present paginate(pipeline_schedules), with: Entities::PipelineSchedule
end
diff --git a/spec/requests/api/pipeline_schedules_spec.rb b/spec/requests/api/pipeline_schedules_spec.rb
index 6b0310a6a2c..07b078ee6e7 100644
--- a/spec/requests/api/pipeline_schedules_spec.rb
+++ b/spec/requests/api/pipeline_schedules_spec.rb
@@ -25,6 +25,18 @@ describe API::PipelineSchedules do
expect(response).to include_pagination_headers
expect(response).to match_response_schema('pipeline_schedules')
end
+
+ it 'avoids N + 1 queries' do
+ control_count = ActiveRecord::QueryRecorder.new do
+ get api("/projects/#{project.id}/pipeline_schedules", developer)
+ end.count
+
+ create_list(:ci_pipeline_schedule, 10, project: project, owner: developer)
+
+ expect do
+ get api("/projects/#{project.id}/pipeline_schedules", developer)
+ end.not_to exceed_query_limit(control_count)
+ end
end
context 'authenticated user with invalid permissions' do