class Promiscuous::BlackHole::Message

Attributes

raw_message[R]

Public Class Methods

new(raw_message) click to toggle source
# File lib/promiscuous_black_hole/message.rb, line 5
def initialize(raw_message)
  @raw_message = raw_message
end

Public Instance Methods

attributes() click to toggle source
# File lib/promiscuous_black_hole/message.rb, line 9
def attributes
  safe_raw_attributes
    .reject { |_, v| EmbeddedMessage.embedded_value?(v) }
    .merge(
      'id'    => raw_message['id'],
      '_v'    => raw_message['version'],
      '_type' => raw_message['types'].first
    )
end
base_type() click to toggle source
# File lib/promiscuous_black_hole/message.rb, line 34
def base_type
  raw_message['types'].last
end
embedded_messages() click to toggle source
# File lib/promiscuous_black_hole/message.rb, line 19
def embedded_messages
  @embedded_messages ||= safe_raw_attributes
    .values
    .select   { |v| EmbeddedMessage.embedded_value?(v) }
    .flat_map { |v| EmbeddedMessage.from_embedded_value(v, self)}
end
id() click to toggle source
# File lib/promiscuous_black_hole/message.rb, line 42
def id
  raw_message['id']
end
operation() click to toggle source
# File lib/promiscuous_black_hole/message.rb, line 38
def operation
  raw_message['operation']
end
table_name() click to toggle source
# File lib/promiscuous_black_hole/message.rb, line 26
def table_name
  base_type
    .gsub(/::Base$/, '')
    .gsub(/::/, '_')
    .underscore
    .pluralize
end
to_s() click to toggle source
# File lib/promiscuous_black_hole/message.rb, line 46
def to_s
  "<Message:#{ raw_message }>"
end

Private Instance Methods

safe_raw_attributes() click to toggle source
# File lib/promiscuous_black_hole/message.rb, line 52
def safe_raw_attributes
  @safe_raw_attributes ||= begin
    attrs = {}

    (raw_message['attributes'] || {}).each do |k, v|
      next if v == [] || v.nil?
      attrs[k] = v.is_a?(Array) ? v.reject(&:nil?) : v
    end

    attrs
  end
end