Module: Pragma::Macro

Defined in:
lib/pragma/macro/model.rb,
lib/pragma/macro/policy.rb,
lib/pragma/macro/classes.rb,
lib/pragma/macro/ordering.rb,
lib/pragma/macro/decorator.rb,
lib/pragma/macro/filtering.rb,
lib/pragma/macro/pagination.rb,
lib/pragma/macro/contract/build.rb,
lib/pragma/macro/contract/persist.rb,
lib/pragma/macro/contract/validate.rb

Defined Under Namespace

Modules: Classes, Contract, Decorator, Filtering, Model, Ordering, Pagination, Policy

Class Method Summary collapse

Class Method Details

.ClassesObject



5
6
7
8
# File 'lib/pragma/macro/classes.rb', line 5

def self.Classes
  step = ->(input, options) { Classes.for(input, options) }
  [step, name: 'classes']
end

.Decorator(name: :instance) ⇒ Object



5
6
7
8
# File 'lib/pragma/macro/decorator.rb', line 5

def self.Decorator(name: :instance)
  step = ->(input, options) { Decorator.for(input, name, options) }
  [step, name: "decorator.#{name}"]
end

.FilteringObject



5
6
7
8
# File 'lib/pragma/macro/filtering.rb', line 5

def self.Filtering
  step = ->(input, options) { Filtering.for(input, options) }
  [step, name: 'filtering']
end

.Model(action = nil) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/pragma/macro/model.rb', line 7

def self.Model(action = nil)
  step = lambda do |input, options|
    Trailblazer::Operation::Pipetree::Step.new(
      Trailblazer::Operation::Model.for(options['model.class'], action),
      'model.class' => options['model.class'],
      '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

.OrderingObject



5
6
7
8
# File 'lib/pragma/macro/ordering.rb', line 5

def self.Ordering
  step = ->(input, options) { Ordering.for(input, options) }
  [step, name: 'ordering']
end

.PaginationObject



5
6
7
8
# File 'lib/pragma/macro/pagination.rb', line 5

def self.Pagination
  step = ->(input, options) { Pagination.for(input, options) }
  [step, name: 'pagination']
end

.Policy(name: :default, action: nil) ⇒ Object



5
6
7
8
# File 'lib/pragma/macro/policy.rb', line 5

def self.Policy(name: :default, action: nil)
  step = ->(input, options) { Policy.for(input, name, options, action) }
  [step, name: "policy.#{name}"]
end