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:
Diffstat (limited to 'app/graphql/resolvers/project_pipeline_resolver.rb')
-rw-r--r--app/graphql/resolvers/project_pipeline_resolver.rb32
1 files changed, 26 insertions, 6 deletions
diff --git a/app/graphql/resolvers/project_pipeline_resolver.rb b/app/graphql/resolvers/project_pipeline_resolver.rb
index b604a408928..8fca6b829c0 100644
--- a/app/graphql/resolvers/project_pipeline_resolver.rb
+++ b/app/graphql/resolvers/project_pipeline_resolver.rb
@@ -7,14 +7,34 @@ module Resolvers
alias_method :project, :object
argument :iid, GraphQL::ID_TYPE,
- required: true,
- description: 'IID of the Pipeline, e.g., "1".'
+ required: false,
+ description: 'IID of the Pipeline. For example, "1".'
- def resolve(iid:)
- BatchLoader::GraphQL.for(iid).batch(key: project) do |iids, loader, args|
- finder = ::Ci::PipelinesFinder.new(project, context[:current_user], iids: iids)
+ argument :sha, GraphQL::STRING_TYPE,
+ required: false,
+ description: 'SHA of the Pipeline. For example, "dyd0f15ay83993f5ab66k927w28673882x99100b".'
- finder.execute.each { |pipeline| loader.call(pipeline.iid.to_s, pipeline) }
+ def ready?(iid: nil, sha: nil)
+ unless iid.present? ^ sha.present?
+ raise Gitlab::Graphql::Errors::ArgumentError, 'Provide one of an IID or SHA'
+ end
+
+ super
+ end
+
+ def resolve(iid: nil, sha: nil)
+ if iid
+ BatchLoader::GraphQL.for(iid).batch(key: project) do |iids, loader, args|
+ finder = ::Ci::PipelinesFinder.new(project, current_user, iids: iids)
+
+ finder.execute.each { |pipeline| loader.call(pipeline.iid.to_s, pipeline) }
+ end
+ else
+ BatchLoader::GraphQL.for(sha).batch(key: project) do |shas, loader, args|
+ finder = ::Ci::PipelinesFinder.new(project, current_user, shas: shas)
+
+ finder.execute.each { |pipeline| loader.call(pipeline.sha.to_s, pipeline) }
+ end
end
end
end