diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-18 13:34:06 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-18 13:34:06 +0300 |
commit | 859a6fb938bb9ee2a317c46dfa4fcc1af49608f0 (patch) | |
tree | d7f2700abe6b4ffcb2dcfc80631b2d87d0609239 /lib/gitlab/graphql | |
parent | 446d496a6d000c73a304be52587cd9bbc7493136 (diff) |
Add latest changes from gitlab-org/gitlab@13-9-stable-eev13.9.0-rc42
Diffstat (limited to 'lib/gitlab/graphql')
-rw-r--r-- | lib/gitlab/graphql/docs/templates/default.md.haml | 2 | ||||
-rw-r--r-- | lib/gitlab/graphql/pagination/connections.rb | 4 | ||||
-rw-r--r-- | lib/gitlab/graphql/pagination/offset_paginated_relation.rb | 12 | ||||
-rw-r--r-- | lib/gitlab/graphql/queries.rb | 14 |
4 files changed, 32 insertions, 0 deletions
diff --git a/lib/gitlab/graphql/docs/templates/default.md.haml b/lib/gitlab/graphql/docs/templates/default.md.haml index 8f5a1788fa5..9dfb9b090a8 100644 --- a/lib/gitlab/graphql/docs/templates/default.md.haml +++ b/lib/gitlab/graphql/docs/templates/default.md.haml @@ -16,6 +16,8 @@ Fields that are deprecated are marked with **{warning-solid}**. Items (fields, enums, etc) that have been removed according to our [deprecation process](../index.md#deprecation-process) can be found in [Removed Items](../removed_items.md). + + <!-- vale gitlab.Spelling = NO --> \ :plain diff --git a/lib/gitlab/graphql/pagination/connections.rb b/lib/gitlab/graphql/pagination/connections.rb index 54a84be4274..965c01dd02f 100644 --- a/lib/gitlab/graphql/pagination/connections.rb +++ b/lib/gitlab/graphql/pagination/connections.rb @@ -6,6 +6,10 @@ module Gitlab module Connections def self.use(schema) schema.connections.add( + ::Gitlab::Graphql::Pagination::OffsetPaginatedRelation, + ::Gitlab::Graphql::Pagination::OffsetActiveRecordRelationConnection) + + schema.connections.add( ActiveRecord::Relation, Gitlab::Graphql::Pagination::Keyset::Connection) diff --git a/lib/gitlab/graphql/pagination/offset_paginated_relation.rb b/lib/gitlab/graphql/pagination/offset_paginated_relation.rb new file mode 100644 index 00000000000..8a8c6e5db50 --- /dev/null +++ b/lib/gitlab/graphql/pagination/offset_paginated_relation.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +# Marker class to enable us to choose the correct +# connection type during resolution +module Gitlab + module Graphql + module Pagination + class OffsetPaginatedRelation < SimpleDelegator + end + end + end +end diff --git a/lib/gitlab/graphql/queries.rb b/lib/gitlab/graphql/queries.rb index de971743490..fcf293fb13e 100644 --- a/lib/gitlab/graphql/queries.rb +++ b/lib/gitlab/graphql/queries.rb @@ -145,6 +145,20 @@ module Gitlab return redacted if printer.fields_printed > 0 end + def complexity(schema) + # See BaseResolver::resolver_complexity + # we want to see the max possible complexity. + fake_args = Struct + .new(:if, :keyword_arguments) + .new(nil, { sort: true, search: true }) + + query = GraphQL::Query.new(schema, text) + # We have no arguments, so fake them. + query.define_singleton_method(:arguments_for) { |_x, _y| fake_args } + + GraphQL::Analysis::AST.analyze_query(query, [GraphQL::Analysis::AST::QueryComplexity]).first + end + def query return @query if defined?(@query) |