Skip to content
代码片段 群组 项目
提交 d526c154 编辑于 作者: Lee Tickett's avatar Lee Tickett
浏览文件

Fix N+1 querying GraphQL for subgroupMilestone

上级 2f3ec052
No related branches found
No related tags found
无相关合并请求
......@@ -45,5 +45,9 @@ def group_projects
options: { include_subgroups: true }
).execute
end
def preloads
super.merge({ subgroup_milestone: :group })
end
end
end
......@@ -85,6 +85,7 @@ class GroupType < NamespaceType
field :milestones,
description: 'Milestones of the group.',
extras: [:lookahead],
resolver: Resolvers::GroupMilestonesResolver
field :boards,
......
......@@ -3,6 +3,8 @@
require 'spec_helper'
RSpec.describe GitlabSchema.types['Group'] do
include GraphqlHelpers
specify { expect(described_class).to expose_permissions_using(Types::PermissionTypes::Group) }
specify { expect(described_class.graphql_name).to eq('Group') }
......@@ -56,4 +58,42 @@
it_behaves_like 'a GraphQL type with labels' do
let(:labels_resolver_arguments) { [:search_term, :includeAncestorGroups, :includeDescendantGroups, :onlyGroupLabels] }
end
describe 'milestones' do
let(:user) { create(:user) }
let(:subgroup) { create(:group, parent: create(:group)) }
let(:query) do
%(
query {
group(fullPath: "#{subgroup.full_path}") {
milestones {
nodes {
id
title
projectMilestone
groupMilestone
subgroupMilestone
}
}
}
}
)
end
def clean_state_query
run_with_clean_state(query, context: { current_user: user })
end
it 'avoids N+1 queries' do
subgroup.add_reporter(user)
create(:milestone, group: subgroup)
control = ActiveRecord::QueryRecorder.new(skip_cached: false) { clean_state_query }
create_list(:milestone, 2, group: subgroup)
expect { clean_state_query }.not_to exceed_all_query_limit(control)
end
end
end
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册