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
# File 'lib/petra/components/entry_set.rb', line 51

def apply!
  object_persisted.each(&:apply!)
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.



60
61
62
# File 'lib/petra/components/entry_set.rb', line 60

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



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

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

#reverseObject


Wrapped Array Methods



72
73
74
# File 'lib/petra/components/entry_set.rb', line 72

def reverse(*)
  wrap { super }
end

#sortObject



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

def sort(*)
  wrap { super }
end