Class: RubyEventStore::SpecificationResult
- Inherits:
-
Object
- Object
- RubyEventStore::SpecificationResult
- Defined in:
- lib/ruby_event_store/specification_result.rb
Constant Summary collapse
- BIG_VALUE =
0b100010010100011110111101100001011111100101001010111110101000000
Instance Method Summary collapse
-
#==(other_spec) ⇒ TrueClass, FalseClass
Two specification attributess are equal if: * they are of the same class * have identical data (verified with eql? method).
-
#all? ⇒ Boolean
Read strategy.
-
#backward? ⇒ Boolean
Read direction.
-
#batch_size ⇒ Integer
Size of batch to read (only for :batch read strategy) / Find out more.
-
#batched? ⇒ Boolean
Read strategy.
-
#dup {|new_attributes| ... } ⇒ SpecificationResult
Clone [SpecificationResult] If block is given cloned attributes might be modified.
-
#first? ⇒ Boolean
Read strategy.
-
#forward? ⇒ Boolean
Read direction.
-
#hash ⇒ Integer
Generates a Fixnum hash value for this object.
-
#initialize(direction: :forward, start: nil, stop: nil, older_than: nil, older_than_or_equal: nil, newer_than: nil, newer_than_or_equal: nil, time_sort_by: nil, count: nil, stream: Stream.new(GLOBAL_STREAM), read_as: :all, batch_size: Specification::DEFAULT_BATCH_SIZE, with_ids: nil, with_types: nil) ⇒ SpecificationResult
constructor
A new instance of SpecificationResult.
-
#last? ⇒ Boolean
Read strategy.
-
#limit ⇒ Integer|Infinity
Results limit or infinity if limit not defined / Find out more.
-
#limit? ⇒ Boolean
Limited results.
-
#newer_than ⇒ Time
Starting time.
-
#newer_than_or_equal ⇒ Time
Starting time.
-
#older_than ⇒ Time
Ending time.
-
#older_than_or_equal ⇒ Time
Ending time.
-
#start ⇒ String
Starting position.
-
#stop ⇒ String|Symbol
Stop position.
-
#stream ⇒ Stream|nil
Stream definition.
-
#time_sort_by ⇒ Symbol
Time sorting strategy.
-
#with_ids ⇒ Array|nil
Ids of specified event to be read (if any given) / Find out more.
-
#with_ids? ⇒ Boolean
Read by specified ids.
-
#with_types ⇒ Array|nil
Event types to be read (if any given) / Find out more.
-
#with_types? ⇒ Boolean
Read by specified event types.
Constructor Details
#initialize(direction: :forward, start: nil, stop: nil, older_than: nil, older_than_or_equal: nil, newer_than: nil, newer_than_or_equal: nil, time_sort_by: nil, count: nil, stream: Stream.new(GLOBAL_STREAM), read_as: :all, batch_size: Specification::DEFAULT_BATCH_SIZE, with_ids: nil, with_types: nil) ⇒ SpecificationResult
Returns a new instance of SpecificationResult.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/ruby_event_store/specification_result.rb', line 5 def initialize(direction: :forward, start: nil, stop: nil, older_than: nil, older_than_or_equal: nil, newer_than: nil, newer_than_or_equal: nil, time_sort_by: nil, count: nil, stream: Stream.new(GLOBAL_STREAM), read_as: :all, batch_size: Specification::DEFAULT_BATCH_SIZE, with_ids: nil, with_types: nil) @attributes = Struct.new( :direction, :start, :stop, :older_than, :older_than_or_equal, :newer_than, :newer_than_or_equal, :time_sort_by, :count, :stream, :read_as, :batch_size, :with_ids, :with_types ).new( direction, start, stop, older_than, older_than_or_equal, newer_than, newer_than_or_equal, time_sort_by, count, stream, read_as, batch_size, with_ids, with_types ) freeze end |
Instance Method Details
#==(other_spec) ⇒ TrueClass, FalseClass
Two specification attributess are equal if:
-
they are of the same class
-
have identical data (verified with eql? method)
238 239 240 |
# File 'lib/ruby_event_store/specification_result.rb', line 238 def ==(other_spec) other_spec.hash.eql?(hash) end |
#all? ⇒ Boolean
Read strategy. True if all items will be read / Find out more.
217 218 219 |
# File 'lib/ruby_event_store/specification_result.rb', line 217 def all? attributes.read_as.equal?(:all) end |
#backward? ⇒ Boolean
Read direction. True is reading backward / Find out more.
145 146 147 |
# File 'lib/ruby_event_store/specification_result.rb', line 145 def backward? get_direction.equal?(:backward) end |
#batch_size ⇒ Integer
Size of batch to read (only for :batch read strategy) / Find out more.
153 154 155 |
# File 'lib/ruby_event_store/specification_result.rb', line 153 def batch_size attributes.batch_size end |
#batched? ⇒ Boolean
Read strategy. True if items will be read in batches / Find out more.
193 194 195 |
# File 'lib/ruby_event_store/specification_result.rb', line 193 def batched? attributes.read_as.equal?(:batch) end |
#dup {|new_attributes| ... } ⇒ SpecificationResult
Clone [SpecificationResult] If block is given cloned attributes might be modified.
225 226 227 228 229 |
# File 'lib/ruby_event_store/specification_result.rb', line 225 def dup new_attributes = attributes.dup yield new_attributes if block_given? SpecificationResult.new(**new_attributes.to_h) end |
#first? ⇒ Boolean
Read strategy. True if first item will be read / Find out more.
201 202 203 |
# File 'lib/ruby_event_store/specification_result.rb', line 201 def first? attributes.read_as.equal?(:first) end |
#forward? ⇒ Boolean
Read direction. True is reading forward / Find out more.
137 138 139 |
# File 'lib/ruby_event_store/specification_result.rb', line 137 def forward? get_direction.equal?(:forward) end |
#hash ⇒ Integer
Generates a Fixnum hash value for this object. This function have the property that a.eql?(b) implies a.hash == b.hash.
The hash value is used along with eql? by the Hash class to determine if two objects reference the same hash key.
This hash is based on
-
class
-
direction
-
start
-
stop
-
older_than
-
older_than_or_equal
-
newer_than
-
newer_than_or_equal
-
time_sort_by
-
count
-
stream
-
read_as
-
batch_size
-
with_ids
-
with_types
269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 |
# File 'lib/ruby_event_store/specification_result.rb', line 269 def hash [ self.class, get_direction, start, stop, older_than, older_than_or_equal, newer_than, newer_than_or_equal, time_sort_by, limit, stream, attributes.read_as, batch_size, with_ids, with_types, ].hash ^ BIG_VALUE end |
#last? ⇒ Boolean
Read strategy. True if last item will be read / Find out more.
209 210 211 |
# File 'lib/ruby_event_store/specification_result.rb', line 209 def last? attributes.read_as.equal?(:last) end |
#limit ⇒ Integer|Infinity
Results limit or infinity if limit not defined / Find out more.
65 66 67 |
# File 'lib/ruby_event_store/specification_result.rb', line 65 def limit attributes.count || Float::INFINITY end |
#limit? ⇒ Boolean
Limited results. True if number of read elements are limited / Find out more.
57 58 59 |
# File 'lib/ruby_event_store/specification_result.rb', line 57 def limit? !attributes.count.nil? end |
#newer_than ⇒ Time
Starting time. / Find out more.
113 114 115 |
# File 'lib/ruby_event_store/specification_result.rb', line 113 def newer_than attributes.newer_than end |
#newer_than_or_equal ⇒ Time
Starting time. / Find out more.
121 122 123 |
# File 'lib/ruby_event_store/specification_result.rb', line 121 def newer_than_or_equal attributes.newer_than_or_equal end |
#older_than ⇒ Time
Ending time. / Find out more.
97 98 99 |
# File 'lib/ruby_event_store/specification_result.rb', line 97 def older_than attributes.older_than end |
#older_than_or_equal ⇒ Time
Ending time. / Find out more.
105 106 107 |
# File 'lib/ruby_event_store/specification_result.rb', line 105 def older_than_or_equal attributes.older_than_or_equal end |
#start ⇒ String
Starting position. Event id of starting event / Find out more.
81 82 83 |
# File 'lib/ruby_event_store/specification_result.rb', line 81 def start attributes.start end |
#stop ⇒ String|Symbol
Stop position. Event id of stopping event / Find out more.
89 90 91 |
# File 'lib/ruby_event_store/specification_result.rb', line 89 def stop attributes.stop end |
#stream ⇒ Stream|nil
Stream definition. Stream to be read or nil / Find out more.
73 74 75 |
# File 'lib/ruby_event_store/specification_result.rb', line 73 def stream attributes.stream end |
#time_sort_by ⇒ Symbol
Time sorting strategy. Nil when not specified. / Find out more.
129 130 131 |
# File 'lib/ruby_event_store/specification_result.rb', line 129 def time_sort_by attributes.time_sort_by end |
#with_ids ⇒ Array|nil
Ids of specified event to be read (if any given) / Find out more.
161 162 163 |
# File 'lib/ruby_event_store/specification_result.rb', line 161 def with_ids attributes.with_ids end |
#with_ids? ⇒ Boolean
Read by specified ids. True if event ids have been specified. / Find out more.
169 170 171 |
# File 'lib/ruby_event_store/specification_result.rb', line 169 def with_ids? !with_ids.nil? end |
#with_types ⇒ Array|nil
Event types to be read (if any given) / Find out more.
177 178 179 |
# File 'lib/ruby_event_store/specification_result.rb', line 177 def with_types attributes.with_types&.map(&:to_s) end |
#with_types? ⇒ Boolean
Read by specified event types. True if event types have been specified. / Find out more.
185 186 187 |
# File 'lib/ruby_event_store/specification_result.rb', line 185 def with_types? !(with_types || []).empty? end |