class Monsoon::VersionsSchema

Attributes

event[R]
stream[R]

Public Class Methods

new(stream, event) click to toggle source
# File lib/monsoon/versions_schema.rb, line 6
def initialize(stream, event)
  @stream = stream
  @event = event
end

Public Instance Methods

deprecated?(version) click to toggle source
# File lib/monsoon/versions_schema.rb, line 29
def deprecated?(version)
  SemVer.new(version) < versions.max_by {|v| SemVer.new(v)} unless versions.empty?
end
get_droplets(record) click to toggle source
# File lib/monsoon/versions_schema.rb, line 11
def get_droplets(record)
  return if record.nil?

  event_schema.map do |version, keys|
    symbolized_keys = keys.map(&:to_sym)
    # Only keep the record keys that are defined in this version's schema
    versioned_record = record.select{|k,v| symbolized_keys.include?(k.to_sym)}
    # stringify record keys
    versioned_record = Hash[versioned_record.map { |k, v| [k.to_s, v] }]
    # add versioning metadata
    versioned_record.merge({
      'droplet_version' => version.to_s,
      'droplet_deprecated' => deprecated?(version),
      'event' => @event
    }) if versioned_record.keys.length == keys.length # make sure we got all the keys for this version
  end.compact
end
versions() click to toggle source
# File lib/monsoon/versions_schema.rb, line 33
def versions
  event_schema.keys
end

Private Instance Methods

event_schema() click to toggle source
# File lib/monsoon/versions_schema.rb, line 44
def event_schema
  return {} unless @event
  @event_schema ||= stream_schema[@event.to_sym] || stream_schema[@event.to_s] || {}
end
stream_schema() click to toggle source
# File lib/monsoon/versions_schema.rb, line 39
def stream_schema
  return {} unless @stream
  @stream_schema ||= Monsoon.versions_schema[@stream.to_sym] || Monsoon.versions_schema[@stream.to_s] || {}
end