Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
1285b005
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1285b005
编写于
5月 31, 2019
作者:
B
Brett Walker
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added common fields to the IssueType
and allow passing of child_complexity to the 'resolver_complexity' metho
上级
b9798c15
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
62 addition
and
6 deletion
+62
-6
app/graphql/resolvers/base_resolver.rb
app/graphql/resolvers/base_resolver.rb
+1
-1
app/graphql/resolvers/concerns/resolves_pipelines.rb
app/graphql/resolvers/concerns/resolves_pipelines.rb
+1
-1
app/graphql/resolvers/issues_resolver.rb
app/graphql/resolvers/issues_resolver.rb
+1
-1
app/graphql/types/base_field.rb
app/graphql/types/base_field.rb
+1
-1
app/graphql/types/issue_type.rb
app/graphql/types/issue_type.rb
+6
-0
app/presenters/issue_presenter.rb
app/presenters/issue_presenter.rb
+11
-1
changelogs/unreleased/10795-add-epic-tree-BE-CE-epic-graphql-support.yml
...leased/10795-add-epic-tree-BE-CE-epic-graphql-support.yml
+5
-0
spec/graphql/types/base_field_spec.rb
spec/graphql/types/base_field_spec.rb
+1
-1
spec/graphql/types/issue_type_spec.rb
spec/graphql/types/issue_type_spec.rb
+6
-0
spec/presenters/issue_presenter_spec.rb
spec/presenters/issue_presenter_spec.rb
+29
-0
未找到文件。
app/graphql/resolvers/base_resolver.rb
浏览文件 @
1285b005
...
...
@@ -10,7 +10,7 @@ module Resolvers
end
end
def
self
.
resolver_complexity
(
args
)
def
self
.
resolver_complexity
(
args
,
child_complexity
:
)
complexity
=
1
complexity
+=
1
if
args
[
:sort
]
complexity
+=
5
if
args
[
:search
]
...
...
app/graphql/resolvers/concerns/resolves_pipelines.rb
浏览文件 @
1285b005
...
...
@@ -20,7 +20,7 @@ module ResolvesPipelines
end
class_methods
do
def
resolver_complexity
(
args
)
def
resolver_complexity
(
args
,
child_complexity
:
)
complexity
=
super
complexity
+=
2
if
args
[
:sha
]
complexity
+=
2
if
args
[
:ref
]
...
...
app/graphql/resolvers/issues_resolver.rb
浏览文件 @
1285b005
...
...
@@ -58,7 +58,7 @@ module Resolvers
IssuesFinder
.
new
(
context
[
:current_user
],
args
).
execute
end
def
self
.
resolver_complexity
(
args
)
def
self
.
resolver_complexity
(
args
,
child_complexity
:
)
complexity
=
super
complexity
+=
2
if
args
[
:labelName
]
...
...
app/graphql/types/base_field.rb
浏览文件 @
1285b005
...
...
@@ -33,7 +33,7 @@ module Types
limit_value
=
[
args
[
:first
],
args
[
:last
],
page_size
].
compact
.
min
# Resolvers may add extra complexity depending on used arguments
complexity
=
child_complexity
+
self
.
resolver
&
.
try
(
:resolver_complexity
,
args
).
to_i
complexity
=
child_complexity
+
self
.
resolver
&
.
try
(
:resolver_complexity
,
args
,
child_complexity:
child_complexity
).
to_i
# Resolvers may add extra complexity depending on number of items being loaded.
multiplier
=
self
.
resolver
&
.
try
(
:complexity_multiplier
,
args
).
to_f
...
...
app/graphql/types/issue_type.rb
浏览文件 @
1285b005
...
...
@@ -15,6 +15,10 @@ module Types
field
:description
,
GraphQL
::
STRING_TYPE
,
null:
true
field
:state
,
IssueStateEnum
,
null:
false
field
:reference
,
GraphQL
::
STRING_TYPE
,
null:
false
,
method: :to_reference
do
argument
:full
,
GraphQL
::
BOOLEAN_TYPE
,
required:
false
,
default_value:
false
end
field
:author
,
Types
::
UserType
,
null:
false
,
resolve:
->
(
obj
,
_args
,
_ctx
)
{
Gitlab
::
Graphql
::
Loaders
::
BatchModelLoader
.
new
(
User
,
obj
.
author_id
).
find
}
...
...
@@ -37,7 +41,9 @@ module Types
field
:upvotes
,
GraphQL
::
INT_TYPE
,
null:
false
field
:downvotes
,
GraphQL
::
INT_TYPE
,
null:
false
field
:user_notes_count
,
GraphQL
::
INT_TYPE
,
null:
false
field
:web_path
,
GraphQL
::
STRING_TYPE
,
null:
false
,
method: :issue_path
field
:web_url
,
GraphQL
::
STRING_TYPE
,
null:
false
field
:relative_position
,
GraphQL
::
INT_TYPE
,
null:
true
field
:closed_at
,
Types
::
TimeType
,
null:
true
...
...
app/presenters/issue_presenter.rb
浏览文件 @
1285b005
...
...
@@ -4,6 +4,16 @@ class IssuePresenter < Gitlab::View::Presenter::Delegated
presents
:issue
def
web_url
Gitlab
::
UrlBuilder
.
build
(
issue
)
url_builder
.
url
end
def
issue_path
url_builder
.
issue_path
(
issue
)
end
private
def
url_builder
@url_builder
||=
Gitlab
::
UrlBuilder
.
new
(
issue
)
end
end
changelogs/unreleased/10795-add-epic-tree-BE-CE-epic-graphql-support.yml
0 → 100644
浏览文件 @
1285b005
---
title
:
Added reference, web_path, and relative_position fields to GraphQL Issue
merge_request
:
28998
author
:
type
:
changed
spec/graphql/types/base_field_spec.rb
浏览文件 @
1285b005
...
...
@@ -6,7 +6,7 @@ describe Types::BaseField do
context
'when considering complexity'
do
let
(
:resolver
)
do
Class
.
new
(
described_class
)
do
def
self
.
resolver_complexity
(
args
)
def
self
.
resolver_complexity
(
args
,
child_complexity
:
)
2
if
args
[
:foo
]
end
...
...
spec/graphql/types/issue_type_spec.rb
浏览文件 @
1285b005
...
...
@@ -6,4 +6,10 @@ describe GitlabSchema.types['Issue'] do
it
{
expect
(
described_class
.
graphql_name
).
to
eq
(
'Issue'
)
}
it
{
expect
(
described_class
).
to
require_graphql_authorizations
(
:read_issue
)
}
it
'has specific fields'
do
%i[relative_position web_path web_url reference]
.
each
do
|
field_name
|
expect
(
described_class
).
to
have_graphql_field
(
field_name
)
end
end
end
spec/presenters/issue_presenter_spec.rb
0 → 100644
浏览文件 @
1285b005
# frozen_string_literal: true
require
'spec_helper'
describe
IssuePresenter
do
include
Gitlab
::
Routing
.
url_helpers
let
(
:user
)
{
create
(
:user
)
}
let
(
:group
)
{
create
(
:group
)
}
let
(
:project
)
{
create
(
:project
,
group:
group
)
}
let
(
:issue
)
{
create
(
:issue
,
project:
project
)
}
let
(
:presenter
)
{
described_class
.
new
(
issue
,
current_user:
user
)
}
before
do
group
.
add_developer
(
user
)
end
describe
'#web_url'
do
it
'returns correct path'
do
expect
(
presenter
.
web_url
).
to
eq
"http://localhost/
#{
group
.
name
}
/
#{
project
.
name
}
/issues/
#{
issue
.
iid
}
"
end
end
describe
'#issue_path'
do
it
'returns correct path'
do
expect
(
presenter
.
issue_path
).
to
eq
"/
#{
group
.
name
}
/
#{
project
.
name
}
/issues/
#{
issue
.
iid
}
"
end
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录