Class: Practical::Loaders::Base

Inherits:
Object
  • Object
show all
Includes:
Pagy::Method
Defined in:
app/lib/practical/loaders/base.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request:, base_relation:) ⇒ Base

Returns a new instance of Base.



11
12
13
14
# File 'app/lib/practical/loaders/base.rb', line 11

def initialize(request:, base_relation:)
  self.request = request
  self.base_relation = base_relation
end

Instance Attribute Details

#base_relationObject

Returns the value of attribute base_relation.



6
7
8
# File 'app/lib/practical/loaders/base.rb', line 6

def base_relation
  @base_relation
end

#datatable_formObject

Returns the value of attribute datatable_form.



6
7
8
# File 'app/lib/practical/loaders/base.rb', line 6

def datatable_form
  @datatable_form
end

#pagy_instanceObject

Returns the value of attribute pagy_instance.



6
7
8
# File 'app/lib/practical/loaders/base.rb', line 6

def pagy_instance
  @pagy_instance
end

#recordsObject

Returns the value of attribute records.



6
7
8
# File 'app/lib/practical/loaders/base.rb', line 6

def records
  @records
end

#relation_builderObject

Returns the value of attribute relation_builder.



6
7
8
# File 'app/lib/practical/loaders/base.rb', line 6

def relation_builder
  @relation_builder
end

#requestObject

Returns the value of attribute request.



6
7
8
# File 'app/lib/practical/loaders/base.rb', line 6

def request
  @request
end

Class Method Details

.load(request:, base_relation:) ⇒ Object



16
17
18
19
20
# File 'app/lib/practical/loaders/base.rb', line 16

def self.load(request:, base_relation:)
  instance = self.new(request: request, base_relation: base_relation)
  instance.load
  return instance
end

Instance Method Details

#build_datatable_formObject

Raises:

  • (NotImplementedError)


36
37
38
# File 'app/lib/practical/loaders/base.rb', line 36

def build_datatable_form
  raise NotImplementedError
end

#build_relation_builderObject

Raises:

  • (NotImplementedError)


40
41
42
# File 'app/lib/practical/loaders/base.rb', line 40

def build_relation_builder
  raise NotImplementedError
end

#datatable_paramsObject



32
33
34
# File 'app/lib/practical/loaders/base.rb', line 32

def datatable_params
  params.permit(datatable: [:sort_key, :sort_direction, filters: {}])
end

#datatable_payloadObject



28
29
30
# File 'app/lib/practical/loaders/base.rb', line 28

def datatable_payload
  (datatable_params[:datatable] || default_payload)
end

#default_payloadObject

Raises:

  • (NotImplementedError)


44
45
46
# File 'app/lib/practical/loaders/base.rb', line 44

def default_payload
  raise NotImplementedError
end

#loadObject



22
23
24
25
26
# File 'app/lib/practical/loaders/base.rb', line 22

def load
  self.datatable_form = build_datatable_form
  self.relation_builder = build_relation_builder
  self.pagy_instance, self.records = pagy(relation_builder.applied_relation)
end

#paramsObject



48
49
50
51
# File 'app/lib/practical/loaders/base.rb', line 48

def params
  return request.params if request.params.kind_of?(ActionController::Parameters)
  return ActionController::Parameters.new(request.params)
end