Class: Ask::Actions::Result

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

Overview

The uniform response shape every action returns. Channel adapters (web controllers, Slack handlers, voice agents) consume the same contract regardless of which surface a request came from.

Examples:

Ask::Actions::Result.ok(message: "Booking confirmed", data: { booking: booking })
Ask::Actions::Result.error(message: "Slot unavailable", code: :slot_taken)

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ok:, message:, data: {}, code: nil) ⇒ Result

Returns a new instance of Result.



15
16
17
18
19
20
# File 'lib/ask/actions/result.rb', line 15

def initialize(ok:, message:, data: {}, code: nil)
  @ok = ok
  @message = message
  @data = data
  @code = code
end

Instance Attribute Details

#codeObject (readonly)

Returns the value of attribute code.



13
14
15
# File 'lib/ask/actions/result.rb', line 13

def code
  @code
end

#dataObject (readonly)

Returns the value of attribute data.



13
14
15
# File 'lib/ask/actions/result.rb', line 13

def data
  @data
end

#messageObject (readonly)

Returns the value of attribute message.



13
14
15
# File 'lib/ask/actions/result.rb', line 13

def message
  @message
end

#okObject (readonly)

Returns the value of attribute ok.



13
14
15
# File 'lib/ask/actions/result.rb', line 13

def ok
  @ok
end

Class Method Details

.error(message: "", data: {}, code: nil) ⇒ Object



38
39
40
# File 'lib/ask/actions/result.rb', line 38

def self.error(message: "", data: {}, code: nil)
  new(ok: false, message: message, data: data, code: code)
end

.ok(message: "", data: {}, code: nil) ⇒ Object



34
35
36
# File 'lib/ask/actions/result.rb', line 34

def self.ok(message: "", data: {}, code: nil)
  new(ok: true, message: message, data: data, code: code)
end

Instance Method Details

#error?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/ask/actions/result.rb', line 26

def error?
  !ok
end

#ok?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/ask/actions/result.rb', line 22

def ok?
  ok
end

#to_hObject



30
31
32
# File 'lib/ask/actions/result.rb', line 30

def to_h
  { ok: ok, message: message, data: data, code: code }
end