Class: RailsSimpleEventSourcing::Result

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_simple_event_sourcing/result.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(success:, data: nil, errors: nil) ⇒ Result

Returns a new instance of Result.

Raises:

  • (ArgumentError)


15
16
17
18
19
20
21
22
# File 'lib/rails_simple_event_sourcing/result.rb', line 15

def initialize(success:, data: nil, errors: nil)
  raise ArgumentError, 'Successful result cannot have errors' if success && errors
  raise ArgumentError, 'Failed result cannot have data' if !success && data

  @success = success
  @data    = data
  @errors  = errors
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



5
6
7
# File 'lib/rails_simple_event_sourcing/result.rb', line 5

def data
  @data
end

#errorsObject (readonly)

Returns the value of attribute errors.



5
6
7
# File 'lib/rails_simple_event_sourcing/result.rb', line 5

def errors
  @errors
end

Class Method Details

.failure(errors:) ⇒ Object



11
12
13
# File 'lib/rails_simple_event_sourcing/result.rb', line 11

def self.failure(errors:)
  new(success: false, errors:)
end

.success(data: nil) ⇒ Object



7
8
9
# File 'lib/rails_simple_event_sourcing/result.rb', line 7

def self.success(data: nil)
  new(success: true, data:)
end

Instance Method Details

#failure?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/rails_simple_event_sourcing/result.rb', line 28

def failure?
  !@success
end

#on_failure {|errors| ... } ⇒ Object

Yields:

Raises:

  • (ArgumentError)


39
40
41
42
43
44
# File 'lib/rails_simple_event_sourcing/result.rb', line 39

def on_failure
  raise ArgumentError, 'Block required' unless block_given?

  yield errors unless success?
  self
end

#on_success {|data| ... } ⇒ Object

Yields:

Raises:

  • (ArgumentError)


32
33
34
35
36
37
# File 'lib/rails_simple_event_sourcing/result.rb', line 32

def on_success
  raise ArgumentError, 'Block required' unless block_given?

  yield data if success?
  self
end

#success?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/rails_simple_event_sourcing/result.rb', line 24

def success?
  @success
end