Class: Petra::Components::EntrySet

Inherits:
Array
  • Object
show all
Defined in:
lib/petra/components/entry_set.rb

Overview

An EntrySet is a collection of log entries for a certain section. It may be used to chain-filter entries, e.g. only object_persisted entries for a certain proxy.

TODO: Probably be Enumerator::Lazy…

Instance Method Summary collapse

Instance Method Details

#apply!Object

Applies all log entries which were marked as object persisted The log entry itself decides whether it is actually executed or not.



51
52
53
54
55
56
# File 'lib/petra/components/entry_set.rb', line 51

def apply!
  object_persisted.each do |o|
    Petra.logger.debug "Applying entry #{o}"
    o.apply!
  end
end

#enqueue_for_persisting!Object

Tells each log entry to enqueue for persisting. The individual log entries may decided whether they actually want to be persisted or not.



63
64
65
# File 'lib/petra/components/entry_set.rb', line 63

def enqueue_for_persisting!
  each(&:enqueue_for_persisting!)
end

#for_attribute_key(key) ⇒ Object



27
28
29
# File 'lib/petra/components/entry_set.rb', line 27

def for_attribute_key(key)
  wrap { select { |e| e.attribute_key.to_s == key.to_s } }
end

#for_proxy(proxy) ⇒ Object


Filters



19
20
21
# File 'lib/petra/components/entry_set.rb', line 19

def for_proxy(proxy)
  wrap { select { |e| e.for_object?(proxy.__object_key) } }
end

#latestObject



39
40
41
# File 'lib/petra/components/entry_set.rb', line 39

def latest
  last
end

#not_object_persistedObject



35
36
37
# File 'lib/petra/components/entry_set.rb', line 35

def not_object_persisted
  wrap { reject(&:object_persisted?) }
end

#object_persistedObject



31
32
33
# File 'lib/petra/components/entry_set.rb', line 31

def object_persisted
  wrap { select(&:object_persisted?) }
end

#of_kind(kind) ⇒ Object



23
24
25
# File 'lib/petra/components/entry_set.rb', line 23

def of_kind(kind)
  wrap { select { |e| e.kind?(kind) } }
end

#prepare_for_retry!Object



67
68
69
# File 'lib/petra/components/entry_set.rb', line 67

def prepare_for_retry!
  select(&:persist_on_retry?).each(&:enqueue_for_persisting!)
end

#reverseObject


Wrapped Array Methods



75
76
77
# File 'lib/petra/components/entry_set.rb', line 75

def reverse(*)
  wrap { super }
end

#sortObject



79
80
81
# File 'lib/petra/components/entry_set.rb', line 79

def sort(*)
  wrap { super }
end