Class: RubyEventStore::SpecificationResult

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_event_store/specification_result.rb

Constant Summary collapse

BIG_VALUE =
0b100010010100011110111101100001011111100101001010111110101000000

Instance Method Summary collapse

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)

Parameters:

Returns:

  • (TrueClass, FalseClass)

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.

Returns:

  • (Boolean)

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.

Returns:

  • (Boolean)

145
146
147
# File 'lib/ruby_event_store/specification_result.rb', line 145

def backward?
  get_direction.equal?(:backward)
end

#batch_sizeInteger

Size of batch to read (only for :batch read strategy) / Find out more.

Returns:

  • (Integer)

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.

Returns:

  • (Boolean)

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.

Yields:

  • (new_attributes)

Returns:


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.

Returns:

  • (Boolean)

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.

Returns:

  • (Boolean)

137
138
139
# File 'lib/ruby_event_store/specification_result.rb', line 137

def forward?
  get_direction.equal?(:forward)
end

#hashInteger

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

Returns:

  • (Integer)

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.

Returns:

  • (Boolean)

209
210
211
# File 'lib/ruby_event_store/specification_result.rb', line 209

def last?
  attributes.read_as.equal?(:last)
end

#limitInteger|Infinity

Results limit or infinity if limit not defined / Find out more.

Returns:

  • (Integer|Infinity)

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.

Returns:

  • (Boolean)

57
58
59
# File 'lib/ruby_event_store/specification_result.rb', line 57

def limit?
  !attributes.count.nil?
end

#newer_thanTime

Starting time. / Find out more.

Returns:

  • (Time)

113
114
115
# File 'lib/ruby_event_store/specification_result.rb', line 113

def newer_than
  attributes.newer_than
end

#newer_than_or_equalTime

Starting time. / Find out more.

Returns:

  • (Time)

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_thanTime

Ending time. / Find out more.

Returns:

  • (Time)

97
98
99
# File 'lib/ruby_event_store/specification_result.rb', line 97

def older_than
  attributes.older_than
end

#older_than_or_equalTime

Ending time. / Find out more.

Returns:

  • (Time)

105
106
107
# File 'lib/ruby_event_store/specification_result.rb', line 105

def older_than_or_equal
  attributes.older_than_or_equal
end

#startString

Starting position. Event id of starting event / Find out more.

Returns:

  • (String)

81
82
83
# File 'lib/ruby_event_store/specification_result.rb', line 81

def start
  attributes.start
end

#stopString|Symbol

Stop position. Event id of stopping event / Find out more.

Returns:

  • (String|Symbol)

89
90
91
# File 'lib/ruby_event_store/specification_result.rb', line 89

def stop
  attributes.stop
end

#streamStream|nil

Stream definition. Stream to be read or nil / Find out more.

Returns:


73
74
75
# File 'lib/ruby_event_store/specification_result.rb', line 73

def stream
  attributes.stream
end

#time_sort_bySymbol

Time sorting strategy. Nil when not specified. / Find out more.

Returns:

  • (Symbol)

129
130
131
# File 'lib/ruby_event_store/specification_result.rb', line 129

def time_sort_by
  attributes.time_sort_by
end

#with_idsArray|nil

Ids of specified event to be read (if any given) / Find out more.

Returns:

  • (Array|nil)

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.

Returns:

  • (Boolean)

169
170
171
# File 'lib/ruby_event_store/specification_result.rb', line 169

def with_ids?
  !with_ids.nil?
end

#with_typesArray|nil

Event types to be read (if any given) / Find out more.

Returns:

  • (Array|nil)

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.

Returns:

  • (Boolean)

185
186
187
# File 'lib/ruby_event_store/specification_result.rb', line 185

def with_types?
  !(with_types || []).empty?
end