Module: Apill::Resource
- Defined in:
- lib/apill/resource.rb,
lib/apill/resource/model.rb,
lib/apill/resource/processors/paging.rb,
lib/apill/resource/processors/sorting.rb,
lib/apill/resource/processors/indexing.rb,
lib/apill/resource/processors/filtering.rb
Defined Under Namespace
Modules: ClassMethods, Processors
Classes: Model
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.included(base) ⇒ Object
22
23
24
25
26
|
# File 'lib/apill/resource.rb', line 22
def self.included(base)
base.extend ClassMethods
base.include HumanError::RescuableResource
base.include HumanError::VerifiableResource
end
|
Instance Method Details
#api_filterable_attributes ⇒ Object
64
65
66
|
# File 'lib/apill/resource.rb', line 64
def api_filterable_attributes
[]
end
|
#api_filterable_parameters ⇒ Object
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
# File 'lib/apill/resource.rb', line 46
def api_filterable_parameters
@api_filterable_parameters ||= begin
filter_params = params.fetch(:filter, {})
scalar_params = [:query]
array_params = {}
api_filterable_attributes.each do |api_filterable_attribute|
if filter_params[api_filterable_attribute].class == Array
array_params[api_filterable_attribute] = []
else
scalar_params << api_filterable_attribute
end
end
scalar_params << array_params
end
end
|
#api_resource ⇒ Object
28
29
30
31
32
|
# File 'lib/apill/resource.rb', line 28
def api_resource
@resource ||= Resource::Model.new(
resource: public_send(self.class.plural_resource_name),
parameters: api_resource_params)
end
|
#api_resource_params ⇒ Object
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/apill/resource.rb', line 34
def api_resource_params
params.permit(sort: String,
page: i{
number
size
offset
limit
cursor
},
filter: api_filterable_parameters)
end
|