require "jsonapi/rails"

JSONAPI::Rails.configure do |config|
  # # Set a default serializable class mapping.
  # config.jsonapi_class = Hash.new { |h, k|
  #   names = k.to_s.split('::')
  #   klass = names.pop
  #   h[k] = [*names, "Serializable#{klass}"].join('::').safe_constantize
  # }
  #
  # # Set a default serializable class mapping for errors.
  # config.jsonapi_errors_class = Hash.new { |h, k|
  #   names = k.to_s.split('::')
  #   klass = names.pop
  #   h[k] = [*names, "Serializable#{klass}"].join('::').safe_constantize
  # }.tap { |h|
  #   h[:'ActiveModel::Errors'] = JSONAPI::Rails::SerializableActiveModelErrors
  #   h[:Hash] = JSONAPI::Rails::SerializableErrorHash
  # }
  #
  # # Set a default JSON API object.
  # config.jsonapi_object = {
  #   version: '1.0'
  # }
  #
  # # Set default cache.
  # # A lambda/proc that will be eval'd in the controller context.
  # config.jsonapi_cache = ->() { nil }
  #
  # # Uncomment the following to enable fragment caching. Make sure you
  # #   invalidate cache keys accordingly.
  # config.jsonapi_cache = lambda {
  #   Rails.cache
  # }
  #
  # # Set default exposures.
  # # A lambda/proc that will be eval'd in the controller context.
  # config.jsonapi_expose = lambda {
  #   { url_helpers: ::Rails.application.routes.url_helpers }
  # }
  #
  # # Set default fields.
  # # A lambda/proc that will be eval'd in the controller context.
  # config.jsonapi_fields = ->() { nil }
  #
  # # Uncomment the following to have it default to the `fields` query
  # #   parameter.
  # config.jsonapi_fields = lambda {
  #   fields_param = params.to_unsafe_hash.fetch(:fields, {})
  #   Hash[fields_param.map { |k, v| [k.to_sym, v.split(',').map!(&:to_sym)] }]
  # }
  #
  # # Set default include.
  # # A lambda/proc that will be eval'd in the controller context.
  # config.jsonapi_include = ->() { nil }
  #
  # # Uncomment the following to have it default to the `include` query
  # #   parameter.
  # config.jsonapi_include = lambda {
  #   params[:include]
  # }
  #
  # # Set default links.
  # # A lambda/proc that will be eval'd in the controller context.
  # config.jsonapi_links = ->() { {} }
  #
  # # Set default meta.
  # # A lambda/proc that will be eval'd in the controller context.
  # config.jsonapi_meta = ->() { nil }
  #
  # # Set a default pagination scheme.
  # config.jsonapi_pagination = ->(_) { {} }
  #
  # # Set a logger.
  # config.logger = Logger.new(STDOUT)
  #
  # # Uncomment the following to disable logging.
  if Rails.env.test?
    # too chatty on the tests, but useful in other envs 
    # because of the possible deserialization problems
    config.logger = Logger.new('/dev/null')
  end
end
