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