class SerializerClassMethods::SerializerDatasourceContext

Public Class Methods

new(serializer) click to toggle source
# File lib/active_loaders/datasource_adapter.rb, line 100
def initialize(serializer)
  @serializer = serializer
end

Public Instance Methods

includes(*args) click to toggle source
# File lib/active_loaders/datasource_adapter.rb, line 118
def includes(*args)
  @datasource_includes ||= {}

  args.each do |arg|
    @datasource_includes.deep_merge!(datasource_includes_to_select(arg))
  end

  @datasource_includes
end
select(*args) click to toggle source
# File lib/active_loaders/datasource_adapter.rb, line 104
def select(*args)
  @datasource_select ||= []
  @datasource_select.concat(args)

  @datasource_select
end
skip_select(*args) click to toggle source
# File lib/active_loaders/datasource_adapter.rb, line 111
def skip_select(*args)
  @datasource_skip_select ||= []
  @datasource_skip_select.concat(args)

  @datasource_skip_select
end
use_datasource(*args) click to toggle source
# File lib/active_loaders/datasource_adapter.rb, line 128
def use_datasource(*args)
  @serializer.use_datasource(*args)
end

Private Instance Methods

datasource_includes_to_select(arg) click to toggle source
# File lib/active_loaders/datasource_adapter.rb, line 133
def datasource_includes_to_select(arg)
  if arg.kind_of?(Hash)
    arg.keys.inject({}) do |memo, key|
      memo[key.to_sym] = ["*", datasource_includes_to_select(arg[key])]
      memo
    end
  elsif arg.kind_of?(Array)
    arg.inject({}) do |memo, element|
      memo.deep_merge!(datasource_includes_to_select(element))
    end
  elsif arg.respond_to?(:to_sym)
    { arg.to_sym => ["*"] }
  else
    fail Datasource::Error, "unknown includes value type #{arg.class}"
  end
end