Module: PlatformSdk::ActiveRecord::DataPipelineable

Extended by:
ActiveSupport::Concern
Defined in:
lib/platform_sdk/active_record/data_pipelineable.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.pipeline_metaObject

Raises:

  • (NotImplementedError)


45
46
47
# File 'lib/platform_sdk/active_record/data_pipelineable.rb', line 45

def self.pipeline_meta
  raise NotImplementedError, 'You must implement the pipeline_meta class method, an example value is { "source": "strongmind-central" }'
end

.pipeline_nounObject

Raises:

  • (NotImplementedError)


41
42
43
# File 'lib/platform_sdk/active_record/data_pipelineable.rb', line 41

def self.pipeline_noun
  raise NotImplementedError, 'You must implement the pipeline_noun class method'
end

Instance Method Details

#one_roster_pipeline_payload(deleted: false) ⇒ Object



70
71
72
# File 'lib/platform_sdk/active_record/data_pipelineable.rb', line 70

def one_roster_pipeline_payload(deleted: false)
  {}
end

#pipeline_additional_attributesObject



66
67
68
# File 'lib/platform_sdk/active_record/data_pipelineable.rb', line 66

def pipeline_additional_attributes
  {}
end

#pipeline_data(action) ⇒ Object



59
60
61
62
63
64
# File 'lib/platform_sdk/active_record/data_pipelineable.rb', line 59

def pipeline_data(action)
  attributes.symbolize_keys
            .merge(pipeline_additional_attributes)
            .except(*pipeline_excluded_attributes)
            .merge(action:)
end

#pipeline_excluded_attributesObject



49
50
51
# File 'lib/platform_sdk/active_record/data_pipelineable.rb', line 49

def pipeline_excluded_attributes
  []
end

#pipeline_identifiersObject



53
54
55
56
57
# File 'lib/platform_sdk/active_record/data_pipelineable.rb', line 53

def pipeline_identifiers
  {
    "id": id
  }
end

#pipeline_payload(action) ⇒ Object



30
31
32
33
34
35
36
37
38
39
# File 'lib/platform_sdk/active_record/data_pipelineable.rb', line 30

def pipeline_payload(action)
  {
    "noun": self.class.pipeline_noun,
    "identifiers": pipeline_identifiers,
    "meta": self.class.pipeline_meta,
    "data": pipeline_data(action),
    "envelope_version": '1.0.0',
    "message_timestamp": Time.current.utc.iso8601
  }
end

#send_pipeline_createObject



15
16
17
18
# File 'lib/platform_sdk/active_record/data_pipelineable.rb', line 15

def send_pipeline_create
  Jobs::SendNounToPipelineJob.perform_later(pipeline_payload('created'),
                                            one_roster_pipeline_payload)
end

#send_pipeline_destroyObject



25
26
27
28
# File 'lib/platform_sdk/active_record/data_pipelineable.rb', line 25

def send_pipeline_destroy
  Jobs::SendNounToPipelineJob.perform_later(pipeline_payload('destroyed'),
                                            one_roster_pipeline_payload(deleted: true))
end

#send_pipeline_updateObject



20
21
22
23
# File 'lib/platform_sdk/active_record/data_pipelineable.rb', line 20

def send_pipeline_update
  Jobs::SendNounToPipelineJob.perform_later(pipeline_payload('modified'),
                                            one_roster_pipeline_payload)
end