Sha256: 4217a57aa68c2de7a70a8e2e666b3f7e02a5ee6b347cbce0d49d58cb4c6c761c
Contents?: true
Size: 925 Bytes
Versions: 2
Compression:
Stored size: 925 Bytes
Contents
require "wisper" require "dry/transaction/step_failure" module Dry module Transaction # @api private class Step include Wisper::Publisher attr_reader :step_name attr_reader :operation attr_reader :call_args def initialize(step_name, operation, call_args = []) @step_name = step_name @operation = operation @call_args = call_args end def with_call_args(*call_args) self.class.new(step_name, operation, call_args) end def call(input) args = call_args + [input] result = operation.call(*args) result.fmap { |value| broadcast :"#{step_name}_success", value value }.or { |value| broadcast :"#{step_name}_failure", *args, value Left(StepFailure.new(step_name, value)) } end def arity operation.arity end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dry-transaction-0.5.0 | lib/dry/transaction/step.rb |
dry-transaction-0.4.0 | lib/dry/transaction/step.rb |