class SharkOnLambda::JsonapiParameters

Public Class Methods

new(params = {}) click to toggle source
# File lib/shark_on_lambda/jsonapi_parameters.rb, line 5
def initialize(params = {})
  @class = default_serializer_classes
  @fields = HashWithIndifferentAccess.new
  @include = []

  parse_params(params) if params.present?
end

Public Instance Methods

classes(serializer_classes = {}) click to toggle source
# File lib/shark_on_lambda/jsonapi_parameters.rb, line 13
def classes(serializer_classes = {})
  @class = default_serializer_classes.merge(serializer_classes)
end
fields(serialized_fields = {}) click to toggle source
# File lib/shark_on_lambda/jsonapi_parameters.rb, line 17
def fields(serialized_fields = {})
  @fields = serialized_fields.with_indifferent_access
end
includes(*includes_list) click to toggle source
# File lib/shark_on_lambda/jsonapi_parameters.rb, line 21
def includes(*includes_list)
  @include = includes_list
end
to_h() click to toggle source
# File lib/shark_on_lambda/jsonapi_parameters.rb, line 25
def to_h
  {
    class: @class,
    fields: @fields,
    include: @include
  }
end
Also aliased as: to_hash
to_hash()
Alias for: to_h

Protected Instance Methods

default_serializer_classes() click to toggle source
# File lib/shark_on_lambda/jsonapi_parameters.rb, line 36
def default_serializer_classes
  HashWithIndifferentAccess.new do |hash, key|
    serializer_service = Inferrers::SerializerInferrer.new(key)
    serializer_class = serializer_service.serializer_class
    hash[key] = serializer_class
  end
end
parse_fields_params(fields_params) click to toggle source
# File lib/shark_on_lambda/jsonapi_parameters.rb, line 44
def parse_fields_params(fields_params)
  return if fields_params.blank?

  serialized_fields = fields_params.transform_values do |fields_param|
    fields = fields_param.split(',')
    fields.map!(&:strip)
    fields.map!(&:to_sym)
  end
  fields(serialized_fields)
end
parse_include_params(include_params) click to toggle source
# File lib/shark_on_lambda/jsonapi_parameters.rb, line 55
def parse_include_params(include_params)
  include_params = JSONAPI::IncludeDirective.new(include_params)
  include_params = include_params.to_hash
  includes(include_params.with_indifferent_access)
end
parse_params(params) click to toggle source
# File lib/shark_on_lambda/jsonapi_parameters.rb, line 61
def parse_params(params)
  parse_fields_params(params[:fields])
  parse_include_params(params[:include])
end