Module: ReactorSDK::ResourceMetadata

Defined in:
lib/reactor_sdk/resource_metadata.rb

Class Method Summary collapse

Class Method Details

.add_delegate_descriptor(payload, resource) ⇒ Object



57
58
59
60
61
# File 'lib/reactor_sdk/resource_metadata.rb', line 57

def add_delegate_descriptor(payload, resource)
  return unless resource.respond_to?(:delegate_descriptor_id)

  payload['delegate_descriptor_id'] = resource.delegate_descriptor_id
end

.add_name(payload, resource) ⇒ Object



53
54
55
# File 'lib/reactor_sdk/resource_metadata.rb', line 53

def add_name(payload, resource)
  payload['name'] = resource.name if resource.respond_to?(:name)
end

.add_position_fields(payload, resource) ⇒ Object



63
64
65
66
# File 'lib/reactor_sdk/resource_metadata.rb', line 63

def add_position_fields(payload, resource)
  payload['order'] = resource.order if resource.respond_to?(:order) && !resource.order.nil?
  payload['rule_order'] = resource.rule_order if resource.respond_to?(:rule_order) && !resource.rule_order.nil?
end

.add_revision_id(payload, resource) ⇒ Object



68
69
70
71
# File 'lib/reactor_sdk/resource_metadata.rb', line 68

def add_revision_id(payload, resource)
  revision_id = revision_id_for(resource)
  payload['revision_id'] = revision_id if revision_id
end

.base_payload(resource, kind:, attributes:, launch_raw:) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/reactor_sdk/resource_metadata.rb', line 17

def base_payload(resource, kind:, attributes:, launch_raw:)
  decorate!(
    {
      'kind' => kind,
      'id' => resource.id,
      'attributes' => attributes,
      'launch_raw' => launch_raw
    },
    resource,
    include_position: false,
    include_revision: false
  )
end

.decorate!(payload, resource, include_position: true, include_revision: true) ⇒ Object



44
45
46
47
48
49
50
51
# File 'lib/reactor_sdk/resource_metadata.rb', line 44

def decorate!(payload, resource, include_position: true, include_revision: true)
  add_name(payload, resource)
  add_delegate_descriptor(payload, resource)
  add_position_fields(payload, resource) if include_position
  add_revision_id(payload, resource) if include_revision

  payload
end

.delegate_descriptor(resource) ⇒ Object



31
32
33
34
35
# File 'lib/reactor_sdk/resource_metadata.rb', line 31

def delegate_descriptor(resource)
  return '' unless resource.respond_to?(:delegate_descriptor_id)

  resource.delegate_descriptor_id.to_s
end

.revision_id_for(resource) ⇒ Object



37
38
39
40
41
42
# File 'lib/reactor_sdk/resource_metadata.rb', line 37

def revision_id_for(resource)
  return resource.revision_id if resource.respond_to?(:revision_id)
  return resource.relationship_id('latest_revision') if resource.respond_to?(:relationship_id)

  nil
end

.summary(resource) ⇒ Object



7
8
9
10
11
12
13
14
15
# File 'lib/reactor_sdk/resource_metadata.rb', line 7

def summary(resource)
  decorate!(
    {
      'id' => resource.id,
      'type' => resource.type
    },
    resource
  )
end