Class: Workato::Connector::Sdk::ObjectDefinitions

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/workato/connector/sdk/object_definitions.rb

Instance Method Summary collapse

Constructor Details

#initialize(object_definitions:, connection:, methods:) ⇒ void

Parameters:



25
26
27
28
29
30
31
# File 'lib/workato/connector/sdk/object_definitions.rb', line 25

def initialize(object_definitions:, connection:, methods:)
  @object_definitions_source = object_definitions
  @methods_source = methods
  @connection = connection
  @object_definitions = T.let({}, T::Hash[T.any(String, Symbol), ObjectDefinition])
  define_object_definition_methods
end

Instance Method Details

#lazy(settings = nil, config_fields = {}) ⇒ ActiveSupport::HashWithIndifferentAccess

Parameters:

Returns:

  • (ActiveSupport::HashWithIndifferentAccess)


39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/workato/connector/sdk/object_definitions.rb', line 39

def lazy(settings = nil, config_fields = {})
  DupHashWithIndifferentAccess.new do |object_definitions, name|
    fields_proc = object_definitions_source.dig(name, :fields)
    raise Workato::Connector::Sdk::UnresolvedObjectDefinitionError, name unless fields_proc

    begin
      object_definitions[name] = create_operation.execute(settings, config_fields) do |connection, input|
        instance_exec(connection, input, object_definitions, &fields_proc)
      end
    rescue SystemStackError => e
      raise Workato::Connector::Sdk::CircleReferenceObjectDefinitionError.new(name, e.backtrace)
    end
  end
end