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_attributesObject



64
65
66
# File 'lib/apill/resource.rb', line 64

def api_filterable_attributes
  []
end

#api_filterable_parametersObject



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_resourceObject



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_paramsObject



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