diff options
Diffstat (limited to 'app/graphql/mutations/concerns/mutations/resolves_issuable.rb')
-rw-r--r-- | app/graphql/mutations/concerns/mutations/resolves_issuable.rb | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/app/graphql/mutations/concerns/mutations/resolves_issuable.rb b/app/graphql/mutations/concerns/mutations/resolves_issuable.rb new file mode 100644 index 00000000000..4146bf8fdc8 --- /dev/null +++ b/app/graphql/mutations/concerns/mutations/resolves_issuable.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +module Mutations + module ResolvesIssuable + extend ActiveSupport::Concern + include Mutations::ResolvesProject + + def resolve_issuable(type:, parent_path:, iid:) + parent = resolve_issuable_parent(parent_path) + + issuable_resolver(type, parent, context).resolve(iid: iid.to_s) + end + + def issuable_resolver(type, parent, context) + resolver_class = "Resolvers::#{type.to_s.classify.pluralize}Resolver".constantize + + resolver_class.single.new(object: parent, context: context) + end + + def resolve_issuable_parent(parent_path) + resolve_project(full_path: parent_path) + end + end +end |