Module: Apill::ProcessableResource

Defined in:
lib/apill/processable_resource.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



21
22
23
# File 'lib/apill/processable_resource.rb', line 21

def self.included(base)
  base.extend  ClassMethods
end

Instance Method Details

#api_filterable_attributesObject



61
62
63
# File 'lib/apill/processable_resource.rb', line 61

def api_filterable_attributes
  []
end

#api_filterable_parametersObject



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/apill/processable_resource.rb', line 43

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_resourceObject



25
26
27
28
29
# File 'lib/apill/processable_resource.rb', line 25

def api_resource
  @resource ||= Resource::Model.new(
                  resource:   public_send(self.class.plural_resource_name),
                  parameters: api_resource_params)
end

#api_resource_paramsObject



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/apill/processable_resource.rb', line 31

def api_resource_params
  params.permit(:sort,
                page:   %i{
                  number
                  size
                  offset
                  limit
                  cursor
                },
                filter: api_filterable_parameters)
end