Class: LcpRuby::Kanban::MoveResult
- Inherits:
-
Object
- Object
- LcpRuby::Kanban::MoveResult
- 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
-
#code ⇒ Object
readonly
Returns the value of attribute code.
-
#details ⇒ Object
readonly
Returns the value of attribute details.
-
#message ⇒ Object
readonly
Returns the value of attribute message.
-
#record ⇒ Object
readonly
Returns the value of attribute record.
Class Method Summary collapse
Instance Method Summary collapse
- #error? ⇒ Boolean
-
#initialize(success:, record: nil, code: nil, message: nil, details: {}) ⇒ MoveResult
constructor
A new instance of MoveResult.
- #ok? ⇒ Boolean
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 = @details = details || {} end |
Instance Attribute Details
#code ⇒ Object (readonly)
Returns the value of attribute code.
21 22 23 |
# File 'lib/lcp_ruby/kanban/move_result.rb', line 21 def code @code end |
#details ⇒ Object (readonly)
Returns the value of attribute details.
21 22 23 |
# File 'lib/lcp_ruby/kanban/move_result.rb', line 21 def details @details end |
#message ⇒ Object (readonly)
Returns the value of attribute message.
21 22 23 |
# File 'lib/lcp_ruby/kanban/move_result.rb', line 21 def @message end |
#record ⇒ Object (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: , 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
47 48 49 |
# File 'lib/lcp_ruby/kanban/move_result.rb', line 47 def error? !ok? end |
#ok? ⇒ Boolean
43 44 45 |
# File 'lib/lcp_ruby/kanban/move_result.rb', line 43 def ok? @success == true end |