Class: Wallaby::ActiveRecord::ModelServiceProvider

Inherits:
ModelServiceProvider show all
Defined in:
lib/adaptors/wallaby/active_record/model_service_provider.rb,
lib/adaptors/wallaby/active_record/model_service_provider/querier.rb,
lib/adaptors/wallaby/active_record/model_service_provider/permitter.rb,
lib/adaptors/wallaby/active_record/model_service_provider/validator.rb,
lib/adaptors/wallaby/active_record/model_service_provider/normalizer.rb,
lib/adaptors/wallaby/active_record/model_service_provider/querier/transformer.rb

Overview

Model service provider

Defined Under Namespace

Classes: Normalizer, Permitter, Querier, Validator

Instance Method Summary collapse

Methods inherited from ModelServiceProvider

#initialize

Constructor Details

This class inherits a constructor from Wallaby::ModelServiceProvider

Instance Method Details

#collection(params, authorizer) ⇒ Object



14
15
16
17
18
19
20
# File 'lib/adaptors/wallaby/active_record/model_service_provider.rb', line 14

def collection(params, authorizer)
  # NOTE: pagination free here
  # since somewhere might use it without pagination
  query = querier.search params
  query = query.order params[:sort] if params[:sort].present?
  query.accessible_by authorizer
end

#create(resource_with_new_value, params, authorizer) ⇒ Object



49
50
51
# File 'lib/adaptors/wallaby/active_record/model_service_provider.rb', line 49

def create(resource_with_new_value, params, authorizer)
  save __callee__, resource_with_new_value, params, authorizer
end

#destroy(resource, _params, _authorizer) ⇒ Object



59
60
61
# File 'lib/adaptors/wallaby/active_record/model_service_provider.rb', line 59

def destroy(resource, _params, _authorizer)
  resource.destroy
end

#find(id, permitted_params, _authorizer) ⇒ Object



38
39
40
41
42
43
44
45
46
# File 'lib/adaptors/wallaby/active_record/model_service_provider.rb', line 38

def find(id, permitted_params, _authorizer)
  resource = @model_class.find id
  resource.assign_attributes normalize permitted_params
  resource
rescue ::ActiveRecord::RecordNotFound
  raise ResourceNotFound, id
rescue ::ActiveModel::UnknownAttributeError
  resource
end

#new(permitted_params, _authorizer) ⇒ Object



31
32
33
34
35
# File 'lib/adaptors/wallaby/active_record/model_service_provider.rb', line 31

def new(permitted_params, _authorizer)
  @model_class.new normalize permitted_params
rescue ::ActiveModel::UnknownAttributeError
  @model_class.new
end

#paginate(query, params) ⇒ Object



23
24
25
26
27
28
# File 'lib/adaptors/wallaby/active_record/model_service_provider.rb', line 23

def paginate(query, params)
  per = params[:per] || Wallaby.configuration.pagination.page_size
  query = query.page params[:page] if query.respond_to? :page
  query = query.per per if query.respond_to? :per
  query
end

#permit(params) ⇒ Object



7
8
9
10
11
# File 'lib/adaptors/wallaby/active_record/model_service_provider.rb', line 7

def permit(params)
  return {} if params[param_key].blank?
  # using fetch could avoid ActionController::ParameterMissing
  params.fetch(param_key, {}).permit permitted_fields
end

#update(resource_with_new_value, params, authorizer) ⇒ Object



54
55
56
# File 'lib/adaptors/wallaby/active_record/model_service_provider.rb', line 54

def update(resource_with_new_value, params, authorizer)
  save __callee__, resource_with_new_value, params, authorizer
end