gitlab-org--gitlab-foss/app/graphql/resolvers/work_items/types_resolver.rb

34 lines
1.1 KiB
Ruby

# frozen_string_literal: true
module Resolvers
module WorkItems
class TypesResolver < BaseResolver
type Types::WorkItems::TypeType.connection_type, null: true
argument :taskable, ::GraphQL::Types::Boolean,
required: false,
description: 'If `true`, only taskable work item types will be returned.' \
' Argument is experimental and can be removed in the future without notice.'
def resolve(taskable: nil)
return unless feature_flag_enabled_for_parent?(object)
# This will require a finder in the future when groups/projects get their work item types
# All groups/projects use the default types for now
base_scope = ::WorkItems::Type.default
base_scope = base_scope.by_type(:task) if taskable
base_scope.order_by_name_asc
end
private
def feature_flag_enabled_for_parent?(parent)
return false unless parent.is_a?(::Project) || parent.is_a?(::Group)
parent.work_items_feature_flag_enabled?
end
end
end
end