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



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

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



47
48
49
# File 'lib/adaptors/wallaby/active_record/model_service_provider.rb', line 47

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

#destroy(resource, _params, _authorizer) ⇒ Object



57
58
59
# File 'lib/adaptors/wallaby/active_record/model_service_provider.rb', line 57

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

#find(id, permitted_params, _authorizer) ⇒ Object



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

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



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

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

#paginate(query, params) ⇒ Object



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

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
# File 'lib/adaptors/wallaby/active_record/model_service_provider.rb', line 7

def permit(params)
  params.require(param_key).permit permitted_fields
end

#update(resource_with_new_value, params, authorizer) ⇒ Object



52
53
54
# File 'lib/adaptors/wallaby/active_record/model_service_provider.rb', line 52

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