Class: LcpRuby::Kanban::MoveResult

Inherits:
Object
  • Object
show all
Defined in:
lib/lcp_ruby/kanban/move_result.rb

Overview

Outcome of a ‘HostProvider#move` call. Constructed via factory methods `MoveResult.ok(record:)` or `MoveResult.error(code:, message:, details:)`. The controller maps the result to an HTTP response (see docs/design/kanban_view.md → “Drag endpoint”).

Constant Summary collapse

ERROR_CODES =
%i[
  validation
  forbidden
  conflict
  not_allowed
  no_transition
  guard_failed
  comment_required
  wip_exceeded
  field_readonly
  unknown
].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(success:, record: nil, code: nil, message: nil, details: {}) ⇒ MoveResult

Returns a new instance of MoveResult.



35
36
37
38
39
40
41
# File 'lib/lcp_ruby/kanban/move_result.rb', line 35

def initialize(success:, record: nil, code: nil, message: nil, details: {})
  @success = success
  @record = record
  @code = code
  @message = message
  @details = details || {}
end

Instance Attribute Details

#codeObject (readonly)

Returns the value of attribute code.



21
22
23
# File 'lib/lcp_ruby/kanban/move_result.rb', line 21

def code
  @code
end

#detailsObject (readonly)

Returns the value of attribute details.



21
22
23
# File 'lib/lcp_ruby/kanban/move_result.rb', line 21

def details
  @details
end

#messageObject (readonly)

Returns the value of attribute message.



21
22
23
# File 'lib/lcp_ruby/kanban/move_result.rb', line 21

def message
  @message
end

#recordObject (readonly)

Returns the value of attribute record.



21
22
23
# File 'lib/lcp_ruby/kanban/move_result.rb', line 21

def record
  @record
end

Class Method Details

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



27
28
29
30
31
32
33
# File 'lib/lcp_ruby/kanban/move_result.rb', line 27

def self.error(code:, message: nil, details: {})
  unless ERROR_CODES.include?(code)
    raise ArgumentError, "Unknown MoveResult error code: #{code.inspect}. Valid: #{ERROR_CODES.join(', ')}"
  end

  new(success: false, code: code, message: message, details: details)
end

.ok(record:) ⇒ Object



23
24
25
# File 'lib/lcp_ruby/kanban/move_result.rb', line 23

def self.ok(record:)
  new(success: true, record: record)
end

Instance Method Details

#error?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/lcp_ruby/kanban/move_result.rb', line 47

def error?
  !ok?
end

#ok?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/lcp_ruby/kanban/move_result.rb', line 43

def ok?
  @success == true
end