Class: TxghQueue::Backends::Sqs::HistorySequence

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Enumerable
Defined in:
lib/txgh-queue/backends/sqs/history_sequence.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sequence) ⇒ HistorySequence

Returns a new instance of HistorySequence.



35
36
37
# File 'lib/txgh-queue/backends/sqs/history_sequence.rb', line 35

def initialize(sequence)
  @sequence = Txgh::Utils.deep_symbolize_keys(sequence)
end

Instance Attribute Details

#sequenceObject (readonly)

Returns the value of attribute sequence.



31
32
33
# File 'lib/txgh-queue/backends/sqs/history_sequence.rb', line 31

def sequence
  @sequence
end

Class Method Details

.from_h(hash) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/txgh-queue/backends/sqs/history_sequence.rb', line 20

def from_h(hash)
  new(
    JSON.parse(
      Txgh::Utils.deep_symbolize_keys(hash)
        .fetch(:history_sequence, {})
        .fetch(:string_value, nil)
    )
  )
end

.from_message(message) ⇒ Object



12
13
14
15
16
17
18
# File 'lib/txgh-queue/backends/sqs/history_sequence.rb', line 12

def from_message(message)
  if attribute = message.message_attributes['history_sequence']
    new(JSON.parse(attribute.string_value))
  else
    new([])
  end
end

Instance Method Details

#add(obj) ⇒ Object



39
40
41
# File 'lib/txgh-queue/backends/sqs/history_sequence.rb', line 39

def add(obj)
  sequence << obj
end

#currentObject



52
53
54
# File 'lib/txgh-queue/backends/sqs/history_sequence.rb', line 52

def current
  sequence.last
end

#dupObject



47
48
49
50
# File 'lib/txgh-queue/backends/sqs/history_sequence.rb', line 47

def dup
  # use marshal serialization to deep copy the sequence
  self.class.new(Marshal.load(Marshal.dump(sequence)))
end

#each(&block) ⇒ Object



56
57
58
# File 'lib/txgh-queue/backends/sqs/history_sequence.rb', line 56

def each(&block)
  sequence.each(&block)
end

#to_hObject



43
44
45
# File 'lib/txgh-queue/backends/sqs/history_sequence.rb', line 43

def to_h
  { string_value: sequence.to_json, data_type: 'String' }
end