apill 2.9.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,86 +0,0 @@
1
- module Apill
2
- module Mixins
3
- module Queryable
4
- module ClassMethods
5
- def query(model)
6
- define_method(:queryed_model_name) do
7
- model
8
- end
9
- end
10
- end
11
-
12
- def self.included(base)
13
- base.extend ClassMethods
14
- end
15
-
16
- private
17
-
18
- def query_params
19
- @query_params ||= params[:query_params] || params || {}
20
- end
21
-
22
- def sanitized_query_params
23
- query_attrs = if respond_to?(:queryable_attributes, true)
24
- queryable_attributes
25
- else
26
- []
27
- end
28
-
29
- query_params.
30
- slice(*query_attrs).
31
- reject { |_k, v| v.nil? || v == '' }
32
- end
33
-
34
- def query_method_name_for(query_item, resource)
35
- if resource.respond_to? "for_#{query_item}"
36
- "for_#{query_item}"
37
- elsif resource.respond_to? query_item
38
- query_item
39
- end
40
- end
41
-
42
- # rubocop:disable Metrics/PerceivedComplexity
43
- def filtered_resource
44
- @filtered_resource ||= begin
45
- resource = if defined? super
46
- super
47
- else
48
- __send__(queryed_model_name)
49
- end
50
- resource = if resource.respond_to? :records
51
- resource.records
52
- else
53
- resource
54
- end
55
- resource_class = if resource.respond_to? :klass
56
- resource.klass.name.constantize
57
- else
58
- resource
59
- end
60
-
61
- sanitized_query_params.inject(resource) do |query_resource, query_param|
62
- key, value = query_param
63
- query_method_name = query_method_name_for(key, resource_class).to_sym
64
-
65
- if resource_class.method(query_method_name).arity == 0
66
- query_resource.public_send(query_method_name)
67
- else
68
- query_resource.public_send(query_method_name, value)
69
- end
70
- end
71
- end
72
- end
73
- # rubocop:enable Metrics/PerceivedComplexity
74
-
75
- def filter_data
76
- filter_data = defined?(super) ? super : {}
77
-
78
- filter_data.merge(querying_data)
79
- end
80
-
81
- def querying_data
82
- {}
83
- end
84
- end
85
- end
86
- end
@@ -1,48 +0,0 @@
1
- module Apill
2
- module Mixins
3
- module Sortable
4
- module ClassMethods
5
- def sort(model)
6
- define_method(:sorted_model_name) do
7
- model
8
- end
9
- end
10
- end
11
-
12
- def self.included(base)
13
- base.extend ClassMethods
14
- end
15
-
16
- private
17
-
18
- def sorting_arguments
19
- sorting_data.values.join(' ')
20
- end
21
-
22
- def filtered_resource
23
- @filtered_resource ||= begin
24
- resource = if defined? super
25
- super
26
- else
27
- __send__(sorted_model_name)
28
- end
29
-
30
- resource.order(sorting_arguments)
31
- end
32
- end
33
-
34
- def filter_data
35
- filter_data = defined?(super) ? super : {}
36
-
37
- filter_data.merge(sorting_data)
38
- end
39
-
40
- def sorting_data
41
- {
42
- sort: params.fetch(:sort, 'created_at'),
43
- direction: params.fetch(:direction, 'DESC'),
44
- }
45
- end
46
- end
47
- end
48
- end