module Pragma::Macro::Filtering

Public Class Methods

for(_input, options) click to toggle source
# File lib/pragma/macro/filtering.rb, line 12
def for(_input, options)
  set_defaults(options)

  options['model'] = apply_filtering(options)

  true
end

Private Class Methods

apply_filtering(options) click to toggle source
# File lib/pragma/macro/filtering.rb, line 30
def apply_filtering(options)
  relation = options['model']

  options['filtering.filters'].each do |filter|
    value = options['params'][filter.param]
    next unless value.present?

    relation = filter.apply(relation: relation, value: value)
  end

  relation
end
set_defaults(options) click to toggle source
# File lib/pragma/macro/filtering.rb, line 22
def set_defaults(options)
  {
    'filtering.filters' => []
  }.each_pair do |key, value|
    options[key] = value unless options[key]
  end
end