Class: Jsonapi::QueryBuilder::Mixins::Sort::Dynamic

Inherits:
Object
  • Object
show all
Defined in:
lib/jsonapi/query_builder/mixins/sort/dynamic.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attribute_prefix, sort) ⇒ Dynamic

Returns a new instance of Dynamic.



10
11
12
13
# File 'lib/jsonapi/query_builder/mixins/sort/dynamic.rb', line 10

def initialize(attribute_prefix, sort)
  @attribute_prefix = attribute_prefix.to_s
  @sort = sort
end

Instance Attribute Details

#attribute_prefixObject (readonly)

Returns the value of attribute attribute_prefix.



8
9
10
# File 'lib/jsonapi/query_builder/mixins/sort/dynamic.rb', line 8

def attribute_prefix
  @attribute_prefix
end

#sortObject (readonly)

Returns the value of attribute sort.



8
9
10
# File 'lib/jsonapi/query_builder/mixins/sort/dynamic.rb', line 8

def sort
  @sort
end

Instance Method Details

#matches?(sort_attribute) ⇒ Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/jsonapi/query_builder/mixins/sort/dynamic.rb', line 15

def matches?(sort_attribute)
  sort_attribute.to_s.start_with?(attribute_prefix)
end

#results(collection, sort_param) ⇒ Object



19
20
21
22
23
24
25
26
# File 'lib/jsonapi/query_builder/mixins/sort/dynamic.rb', line 19

def results(collection, sort_param)
  dynamic_attribute = sort_param.attribute.delete_prefix(attribute_prefix)
  if sort.respond_to?(:call)
    sort.call(collection, dynamic_attribute, sort_param.direction)
  else
    sort.new(collection, dynamic_attribute, sort_param.direction).results
  end
end