Sha256: b5398ef9e8d9125f8bb487e15072f6f80a7385202ab5479a0e6163eba41bdb01

Contents?: true

Size: 841 Bytes

Versions: 1

Compression:

Stored size: 841 Bytes

Contents

# frozen_string_literal: true

require 'trailblazer/operation/validate'

module Pragma
  module Macro
    module Contract
      def self.Validate(name: 'default', **args)
        step = lambda do |input, options|
          Macro.require_skill('Contract::Validate', "contract.#{name}.class", options)

          Trailblazer::Operation::Pipetree::Step.new(
            Trailblazer::Operation::Contract::Validate(**args).first
          ).call(input, options).tap do |result|
            unless result
              options['result.response'] = Pragma::Operation::Response::UnprocessableEntity.new(
                errors: options["contract.#{name}"].errors.messages
              ).decorate_with(Pragma::Decorator::Error)
            end
          end
        end

        [step, name: "contract.#{name}.validate"]
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pragma-2.5.0 lib/pragma/macro/contract/validate.rb