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:
authorBob Van Landuyt <bob@vanlanduyt.co>2018-05-21 10:52:24 +0300
committerBob Van Landuyt <bob@vanlanduyt.co>2018-06-05 21:47:42 +0300
commitaa4b1ae71260720b47695b8a256134f20280f61a (patch)
tree81020f291d634e76fe0a31d906ed73639f634b7d /app/graphql
parent287c34ca1f9af4e395493c99623af8437f82d919 (diff)
Add `present_using` to types
By specifying a presenter for the object type, we can keep the logic out of `GitlabSchema`. The presenter gets initialized using the object being presented, and the context (including the `current_user`).
Diffstat (limited to 'app/graphql')
-rw-r--r--app/graphql/gitlab_schema.rb3
-rw-r--r--app/graphql/types/merge_request_type.rb56
-rw-r--r--app/graphql/types/project_type.rb1
3 files changed, 29 insertions, 31 deletions
diff --git a/app/graphql/gitlab_schema.rb b/app/graphql/gitlab_schema.rb
index 143ccf92c85..ac75c4bf2e3 100644
--- a/app/graphql/gitlab_schema.rb
+++ b/app/graphql/gitlab_schema.rb
@@ -1,11 +1,12 @@
Gitlab::Graphql::Authorize.register!
+Gitlab::Graphql::Present.register!
GitlabSchema = GraphQL::Schema.define do
use BatchLoader::GraphQL
enable_preloading
enable_authorization
+ enable_presenting
- mutation(Types::MutationType)
query(Types::QueryType)
end
diff --git a/app/graphql/types/merge_request_type.rb b/app/graphql/types/merge_request_type.rb
index 9b12f6f2bf3..fc430ca03d5 100644
--- a/app/graphql/types/merge_request_type.rb
+++ b/app/graphql/types/merge_request_type.rb
@@ -1,50 +1,46 @@
Types::MergeRequestType = GraphQL::ObjectType.define do
+ present_using MergeRequestPresenter
+
name 'MergeRequest'
field :id, !types.ID
field :iid, !types.ID
- field :title, types.String
+ field :title, !types.String
field :description, types.String
field :state, types.String
-
- field :created_at, Types::TimeType
- field :updated_at, Types::TimeType
-
- field :source_project, -> { Types::ProjectType }
- field :target_project, -> { Types::ProjectType }
-
+ field :created_at, !Types::TimeType
+ field :updated_at, !Types::TimeType
+ field :source_project, Types::ProjectType
+ field :target_project, !Types::ProjectType
# Alias for target_project
- field :project, -> { Types::ProjectType }
-
+ field :project, !Types::ProjectType
+ field :project_id, !types.Int, property: :target_project_id
field :source_project_id, types.Int
- field :target_project_id, types.Int
- field :project_id, types.Int
-
- field :source_branch, types.String
- field :target_branch, types.String
-
+ field :target_project_id, !types.Int
+ field :source_branch, !types.String
+ field :target_branch, !types.String
field :work_in_progress, types.Boolean, property: :work_in_progress?
field :merge_when_pipeline_succeeds, types.Boolean
-
field :sha, types.String, property: :diff_head_sha
field :merge_commit_sha, types.String
-
field :user_notes_count, types.Int
field :should_remove_source_branch, types.Boolean, property: :should_remove_source_branch?
field :force_remove_source_branch, types.Boolean, property: :force_remove_source_branch?
-
field :merge_status, types.String
-
- field :web_url, types.String do
- resolve ->(merge_request, args, ctx) { Gitlab::UrlBuilder.build(merge_request) }
- end
-
+ field :in_progress_merge_commit_sha, types.String
+ field :merge_error, types.String
+ field :allow_maintainer_to_push, types.Boolean
+ field :should_be_rebased, types.Boolean, property: :should_be_rebased?
+ field :rebase_commit_sha, types.String
+ field :rebase_in_progress, types.Boolean, property: :rebase_in_progress?
+ field :diff_head_sha, types.String
+ field :merge_commit_message, types.String
+ field :merge_ongoing, types.Boolean, property: :merge_ongoing?
+ field :work_in_progress, types.Boolean, property: :work_in_progress?
+ field :source_branch_exists, types.Boolean, property: :source_branch_exists?
+ field :mergeable_discussions_state, types.Boolean
+ field :web_url, types.String, property: :web_url
field :upvotes, types.Int
field :downvotes, types.Int
-
- field :subscribed, types.Boolean do
- resolve ->(merge_request, args, ctx) do
- merge_request.subscribed?(ctx[:current_user], merge_request.target_project)
- end
- end
+ field :subscribed, types.Boolean, property: :subscribed?
end
diff --git a/app/graphql/types/project_type.rb b/app/graphql/types/project_type.rb
index bfefc594896..593c1b67830 100644
--- a/app/graphql/types/project_type.rb
+++ b/app/graphql/types/project_type.rb
@@ -31,6 +31,7 @@ Types::ProjectType = GraphQL::ObjectType.define do
field :container_registry_enabled, types.Boolean
field :shared_runners_enabled, types.Boolean
field :lfs_enabled, types.Boolean
+ field :ff_only_enabled, types.Boolean, property: :merge_requests_ff_only_enabled
field :avatar_url, types.String do
resolve ->(project, args, ctx) { project.avatar_url(only_path: false) }