class Gitlab::Triage::GraphqlQueries::QueryBuilder
Constants
- BASE_QUERY
Attributes
conditions[R]
graphql_only[R]
resource_type[R]
source_type[R]
Public Class Methods
new(source_type, resource_type, conditions, graphql_only: false)
click to toggle source
# File lib/gitlab/triage/graphql_queries/query_builder.rb, line 9 def initialize(source_type, resource_type, conditions, graphql_only: false) @source_type = source_type.to_s.singularize @resource_type = resource_type @conditions = conditions @graphql_only = graphql_only end
Public Instance Methods
query()
click to toggle source
# File lib/gitlab/triage/graphql_queries/query_builder.rb, line 20 def query return if resource_fields.empty? format( BASE_QUERY, source_type: source_type, resource_type: resource_type.to_s.camelize(:lower), resource_fields: resource_fields.join(' '), resource_query: resource_query, iids_declaration: graphql_only ? nil : ', $iids: [String!]', iids_query: graphql_only ? nil : ', iids: $iids' ) end
resource_path()
click to toggle source
# File lib/gitlab/triage/graphql_queries/query_builder.rb, line 16 def resource_path [source_type, resource_type] end
Private Instance Methods
issues_resource_query(condition, condition_params)
click to toggle source
# File lib/gitlab/triage/graphql_queries/query_builder.rb, line 108 def issues_resource_query(condition, condition_params) case condition.to_s when 'forbidden_labels' QueryParamBuilders::LabelsParamBuilder.new('labelName', condition_params, negated: true) when 'labels' QueryParamBuilders::LabelsParamBuilder.new('labelName', condition_params) end end
merge_requests_resource_query(condition, condition_params)
click to toggle source
# File lib/gitlab/triage/graphql_queries/query_builder.rb, line 95 def merge_requests_resource_query(condition, condition_params) case condition.to_s when 'forbidden_labels' QueryParamBuilders::LabelsParamBuilder.new('labels', condition_params, negated: true) when 'labels' QueryParamBuilders::LabelsParamBuilder.new('labels', condition_params) when 'source_branch' QueryParamBuilders::BaseParamBuilder.new('sourceBranch', condition_params) when 'target_branch' QueryParamBuilders::BaseParamBuilder.new('targetBranch', condition_params) end end
resource_fields()
click to toggle source
# File lib/gitlab/triage/graphql_queries/query_builder.rb, line 57 def resource_fields fields = [] fields << 'userNotesCount' if conditions.dig(:discussions, :attribute).to_s == 'notes' fields << 'userDiscussionsCount' if conditions.dig(:discussions, :attribute).to_s == 'threads' if graphql_only fields << 'labels { nodes { title } }' fields << 'author { id name username }' fields << 'assignees { nodes { id name username } }' if conditions.key?(:assignee_member) fields << 'upvotes' if conditions.dig(:upvotes, :attribute).to_s == 'upvotes' fields << 'downvotes' if conditions.dig(:upvotes, :attribute).to_s == 'downvotes' fields << 'mergedAt' if resource_type == 'merge_requests' end fields end
resource_query()
click to toggle source
# File lib/gitlab/triage/graphql_queries/query_builder.rb, line 75 def resource_query condition_queries = [] condition_queries << QueryParamBuilders::BaseParamBuilder.new('includeSubgroups', true, with_quotes: false) if source_type == 'group' conditions.each do |condition, condition_params| condition_queries << QueryParamBuilders::DateParamBuilder.new(condition_params) if condition.to_s == 'date' condition_queries << QueryParamBuilders::BaseParamBuilder.new('milestoneTitle', condition_params) if condition.to_s == 'milestone' condition_queries << QueryParamBuilders::BaseParamBuilder.new('state', condition_params, with_quotes: false) if condition.to_s == 'state' condition_queries << merge_requests_resource_query(condition, condition_params) if resource_type == 'merge_requests' condition_queries << issues_resource_query(condition, condition_params) if resource_type == 'issues' end condition_queries .compact .map(&:build_param) .join end