Class: NextStation::Result::Success

Inherits:
NextStation::Result show all
Defined in:
lib/next_station/result.rb

Overview

Represents a successful operation result.

Instance Method Summary collapse

Methods inherited from NextStation::Result

#error, #failure?

Constructor Details

#initialize(value, schema: nil, enforced: false) ⇒ Success

Returns a new instance of Success.

Parameters:

  • value (Object)

    The result value.

  • schema (Class, nil) (defaults to: nil)

    The Dry::Struct schema to validate against.

  • enforced (Boolean) (defaults to: false)

    Whether schema validation is enforced.



41
42
43
44
45
46
# File 'lib/next_station/result.rb', line 41

def initialize(value, schema: nil, enforced: false)
  @raw_value = value
  @schema = schema
  @enforced = enforced
  @validated_value = nil
end

Instance Method Details

#success?Boolean

Returns:

  • (Boolean)


62
63
64
# File 'lib/next_station/result.rb', line 62

def success?
  true
end

#valueObject



48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/next_station/result.rb', line 48

def value
  if @enforced && @schema.nil?
    raise NextStation::Error, 'Result schema enforcement is enabled but no result_schema is defined.'
  end

  return @raw_value unless @enforced && @schema

  @value ||= begin
    @schema.new(@raw_value)
  rescue StandardError => e
    raise NextStation::ResultShapeError, e.message
  end
end