Module: Smith::PersistenceAdapters::PayloadVersion

Defined in:
lib/smith/persistence_adapters/payload_version.rb

Class Method Summary collapse

Class Method Details

.call(payload) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/smith/persistence_adapters/payload_version.rb', line 8

def call(payload)
  document = payload.is_a?(String) ? JSON.parse(payload) : payload
  raise TypeError, "persisted workflow payload must be a JSON object" unless document.is_a?(Hash)

  version = document.fetch("persistence_version", 0)
  unless version.is_a?(Integer) && version >= 0
    raise TypeError, "persisted workflow persistence_version must be a non-negative integer"
  end

  version
rescue JSON::ParserError
  0
end