11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/plutonium/resource/controllers/queryable.rb', line 11
def current_query_object
@current_query_object ||=
Plutonium::Resource::QueryObject.new(resource_class, raw_resource_query_params, request.path) do |query_object|
if current_definition.search_definition
query_object.define_search proc { |scope, search:|
current_definition.search_definition.call(scope, search)
}
end
current_definition.defined_scopes.each do |key, value|
query_object.define_scope key, value[:block], **value[:options]
end
current_definition.defined_sorts.each do |key, value|
query_object.define_sorter key, value[:block], **value[:options]
end
if current_definition.respond_to?(:default_sort) && current_definition.default_sort
query_object.default_sort_config = current_definition.default_sort
end
current_definition.defined_filters.each do |key, value|
with = value[:options][:with]
if with.is_a?(Class) && with < Plutonium::Query::Filter
options = value[:options].except(:with)
options[:key] ||= key
with = with.new(**options)
end
query_object.define_filter key, with, &value[:block]
end
query_object
end
end
|