Sha256: f57be4ee8a1d43473c311a12c2c529444434594cb1f689a88aeb5b54ede859d4

Contents?: true

Size: 775 Bytes

Versions: 1

Compression:

Stored size: 775 Bytes

Contents

# frozen_string_literal: true

require 'trailblazer/operation/model'

module Pragma
  module Macro
    def self.Model(action = nil)
      step = lambda do |input, options|
        klass = Macro.require_skill('Model', 'model.class', options)

        Trailblazer::Operation::Pipetree::Step.new(
          Trailblazer::Operation::Model.for(klass, action),
          'model.class' => klass,
          'model.action' => action
        ).call(input, options).tap do |result|
          unless result
            options['result.response'] = Pragma::Operation::Response::NotFound.new.decorate_with(
              Pragma::Decorator::Error
            )
          end
        end
      end

      [step, name: "model.#{action || 'build'}"]
    end

    module Model
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pragma-2.5.0 lib/pragma/macro/model.rb