module Trailblazer::Finder::Dsl

Attributes

config[R]

Public Instance Methods

adapter(adapter) click to toggle source
# File lib/trailblazer/finder/dsl.rb, line 36
def adapter(adapter)
  config[:adapter] = adapter.to_s
end
apply_config(options, **) click to toggle source
# File lib/trailblazer/finder/dsl.rb, line 44
def apply_config(options, **)
  return @config = options unless options.empty?

  @config = {
    actions:    {},
    entity:     nil,
    properties: {},
    filters:    {},
    paging:     {},
    sorting:    {},
    adapters:   []
  }
end
entity(&block) click to toggle source
# File lib/trailblazer/finder/dsl.rb, line 12
def entity(&block)
  config[:entity] = block
end
filter_by(name, options = {}, &block) click to toggle source
# File lib/trailblazer/finder/dsl.rb, line 28
def filter_by(name, options = {}, &block)
  filter_name = name.to_sym
  config[:filters][filter_name] = {}
  config[:filters][filter_name][:name] = name
  config[:filters][filter_name][:with] = options[:with] if options.include?(:with)
  config[:filters][filter_name][:block] = block || nil
end
inherited(base) click to toggle source
# File lib/trailblazer/finder/dsl.rb, line 8
def inherited(base)
  base.instance_variable_set "@config", apply_config({})
end
paginator(paginator) click to toggle source
# File lib/trailblazer/finder/dsl.rb, line 40
def paginator(paginator)
  config[:paginator] = paginator.to_s
end
paging(options, **) click to toggle source
# File lib/trailblazer/finder/dsl.rb, line 16
def paging(options, **)
  config[:paging][:per_page] = options[:per_page] || 25
  config[:paging][:min_per_page] = options[:min_per_page] || 10
  config[:paging][:max_per_page] = options[:max_per_page] || 100
end
property(name, options = {}) click to toggle source
# File lib/trailblazer/finder/dsl.rb, line 22
def property(name, options = {})
  config[:properties][name] = options
  config[:properties][name][:type] = options[:type] || Types::String
  config[:sorting][name] = options[:sort_direction] || :desc if options[:sortable]
end