class SearchObject::Search

:api: private

Attributes

params[R]

Public Class Methods

new(scope:, options: nil, defaults: nil, params: nil) click to toggle source
# File lib/search_object/search.rb, line 8
def initialize(scope:, options: nil, defaults: nil, params: nil)
  @scope = scope
  @options = options || {}
  @defaults = defaults || {}

  self.params = params
end

Public Instance Methods

count(context) click to toggle source
# File lib/search_object/search.rb, line 31
def count(context)
  query(context).count
end
param(name) click to toggle source
# File lib/search_object/search.rb, line 20
def param(name)
  @params[name.to_s]
end
params=(params) click to toggle source
# File lib/search_object/search.rb, line 16
def params=(params)
  @params = @defaults.merge(Helper.slice_keys(Helper.stringify_keys(params || {}), @options.keys))
end
query(context) click to toggle source
# File lib/search_object/search.rb, line 24
def query(context)
  @params.inject(@scope) do |scope, (name, value)|
    new_scope = context.instance_exec scope, value, &@options[name]
    new_scope || scope
  end
end