Class: Unity::DynamoDBStreams::EventProcessor

Inherits:
Object
  • Object
show all
Defined in:
lib/unity/dynamodbstreams/event_processor.rb,
lib/unity/dynamodbstreams/event_processor/version.rb

Defined Under Namespace

Classes: TableHandler

Constant Summary collapse

HOOK_TYPES =
{
  'INSERT' => :insert,
  'REMOVE' => :remove,
  'MODIFY' => :update
}.freeze
VERSION =
'1.0.1'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(&block) ⇒ EventProcessor

Returns a new instance of EventProcessor.



19
20
21
22
# File 'lib/unity/dynamodbstreams/event_processor.rb', line 19

def initialize(&block)
  @table_handlers = {}
  instance_exec(&block) if block_given?
end

Class Method Details

.table_handlersObject



15
16
17
# File 'lib/unity/dynamodbstreams/event_processor.rb', line 15

def self.table_handlers
  @table_handlers ||= {}
end

Instance Method Details

#parse(str) ⇒ Object



29
30
31
# File 'lib/unity/dynamodbstreams/event_processor.rb', line 29

def parse(str)
  @event_parser.call(str)
end

#process(event) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/unity/dynamodbstreams/event_processor.rb', line 33

def process(event)
  event_source_arn_split = event.event_source_arn.split(':', 6)
  table_name = event_source_arn_split[5].split('/').at(1)
  return unless @table_handlers.key?(table_name)

  hook_type = HOOK_TYPES[event.event_name]
  return if hook_type.nil?

  @table_handlers[table_name].each(hook_type) do |handler|
    handler.call(event)
  end

  true
end

#table(table_name, &block) ⇒ Object



24
25
26
27
# File 'lib/unity/dynamodbstreams/event_processor.rb', line 24

def table(table_name, &block)
  @table_handlers[table_name] ||= TableHandler.new
  @table_handlers[table_name].instance_exec(&block)
end