Class: RubyEventStore::ExpectedVersion
- Inherits:
-
Object
- Object
- RubyEventStore::ExpectedVersion
- Defined in:
- lib/ruby_event_store/expected_version.rb
Constant Summary collapse
- POSITION_DEFAULT =
-1.freeze
- NOT_RESOLVED =
Object.new.freeze
Instance Attribute Summary collapse
-
#version ⇒ Object
readonly
Returns the value of attribute version.
Class Method Summary collapse
Instance Method Summary collapse
- #==(other_expected_version) ⇒ Object (also: #eql?)
- #any? ⇒ Boolean
- #auto? ⇒ Boolean
- #hash ⇒ Object
-
#initialize(version) ⇒ ExpectedVersion
constructor
A new instance of ExpectedVersion.
- #none? ⇒ Boolean
- #resolve_for(stream, resolver = Proc.new {}) ⇒ Object
Constructor Details
#initialize(version) ⇒ ExpectedVersion
Returns a new instance of ExpectedVersion.
20 21 22 23 |
# File 'lib/ruby_event_store/expected_version.rb', line 20 def initialize(version) @version = version invalid_version! unless [Integer, :any, :none, :auto].any? {|i| i === version} end |
Instance Attribute Details
#version ⇒ Object (readonly)
Returns the value of attribute version.
18 19 20 |
# File 'lib/ruby_event_store/expected_version.rb', line 18 def version @version end |
Class Method Details
.any ⇒ Object
6 7 8 |
# File 'lib/ruby_event_store/expected_version.rb', line 6 def self.any new(:any) end |
.auto ⇒ Object
14 15 16 |
# File 'lib/ruby_event_store/expected_version.rb', line 14 def self.auto new(:auto) end |
.none ⇒ Object
10 11 12 |
# File 'lib/ruby_event_store/expected_version.rb', line 10 def self.none new(:none) end |
Instance Method Details
#==(other_expected_version) ⇒ Object Also known as: eql?
60 61 62 63 |
# File 'lib/ruby_event_store/expected_version.rb', line 60 def ==(other_expected_version) other_expected_version.instance_of?(self.class) && other_expected_version.version.equal?(version) end |
#any? ⇒ Boolean
25 26 27 |
# File 'lib/ruby_event_store/expected_version.rb', line 25 def any? version.equal?(:any) end |
#auto? ⇒ Boolean
29 30 31 |
# File 'lib/ruby_event_store/expected_version.rb', line 29 def auto? version.equal?(:auto) end |
#hash ⇒ Object
53 54 55 56 57 58 |
# File 'lib/ruby_event_store/expected_version.rb', line 53 def hash [ self.class, version ].hash ^ BIG_VALUE end |
#none? ⇒ Boolean
33 34 35 |
# File 'lib/ruby_event_store/expected_version.rb', line 33 def none? version.equal?(:none) end |
#resolve_for(stream, resolver = Proc.new {}) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/ruby_event_store/expected_version.rb', line 37 def resolve_for(stream, resolver = Proc.new {}) invalid_version! if stream.global? && !any? case version when Integer version when :none POSITION_DEFAULT when :auto resolver[stream] || POSITION_DEFAULT end end |