class FastCqrs::Request
A base Request
class uses deserializer to parse the Rack::Request body into an easy to use hash. Useful when more data are required than passed in the input Usage: Inherit and override the model
method
Attributes
deserializer[R]
Public Class Methods
inherited(klass)
click to toggle source
Calls superclass method
# File lib/fast_cqrs/request.rb, line 14 def self.inherited(klass) super klass.class_eval do include Dry::Monads[:result, :try] end end
new(deserializer:)
click to toggle source
# File lib/fast_cqrs/request.rb, line 40 def initialize(deserializer:) @deserializer = deserializer end
Public Instance Methods
call(input)
click to toggle source
# File lib/fast_cqrs/request.rb, line 21 def call(input) return fail! unless (deserialized = model(input)) Success(deserialized) end
Protected Instance Methods
model(input)
click to toggle source
overwrite this to prepare valid request object
# File lib/fast_cqrs/request.rb, line 30 def model(input) return if (deserialized = deserialize(input)).error? deserialized.value! end
Private Instance Methods
deserialize(input)
click to toggle source
# File lib/fast_cqrs/request.rb, line 44 def deserialize(input) Try { deserializer.call(input) } end
fail!()
click to toggle source
# File lib/fast_cqrs/request.rb, line 48 def fail! Failure(:deserialize) end