Module: Groovestack::Base::GraphQL::Mutations::MethodTrigger
- Defined in:
- lib/groovestack/base/graphql/mutations/method_trigger.rb
Instance Method Summary collapse
-
#trigger_instance_method!(obj:, attrs:, instance_method:, args: nil, authorization_policy: nil) ⇒ Object
rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity.
Instance Method Details
#trigger_instance_method!(obj:, attrs:, instance_method:, args: nil, authorization_policy: nil) ⇒ Object
rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/groovestack/base/graphql/mutations/method_trigger.rb', line 8 def trigger_instance_method!(obj:, attrs:, instance_method:, args: nil, authorization_policy: nil) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity raise GraphQL::ExecutionError, 'instance_method not present' if instance_method.blank? instance_method = instance_method.to_sym raise ::GraphQL::ExecutionError, 'instance_method undefined' unless obj.respond_to?(instance_method) if attrs.present? raise ::GraphQL::ExecutionError, 'Cannot update multiple attributes when triggering instance method' end unless .nil? || .permitted_instance_methods.include?(instance_method) # rubocop:disable Layout/LineLength raise ::GraphQL::ExecutionError, "Unauthorized not allowed to trigger #{instance_method} for this #{obj.class}" end if args.present? && args.is_a?(Array) obj.send(instance_method.to_s, *args) elsif args.present? && args.is_a?(Hash) obj.send(instance_method.to_s, **args.symbolize_keys!) else obj.send(instance_method.to_s) end end |