class Get::Builders::QueryBuilder

Attributes

field[R]

Public Class Methods

new(params = nil, options = {}) click to toggle source
Calls superclass method Get::Builders::BaseBuilder::new
# File lib/get/builders/query_builder.rb, line 25
def initialize(params = nil, options = {})
  @params, @options = params, options
  super(query_params)
end

Private Instance Methods

class_args() click to toggle source
# File lib/get/builders/query_builder.rb, line 6
def class_args
  {
    key: @key,
    collection: @result_entity.plural?,
    result_entity: @result_entity.singularize.symbolize,
    store: Get.adapter.context_for_entity(@result_entity.singularize)
  }
end
conditions() click to toggle source

find_first

# File lib/get/builders/query_builder.rb, line 41
def conditions
  return { conditions: @params } unless self.class.field
  { conditions: { self.class.field => @params } }
end
query_action() click to toggle source
# File lib/get/builders/query_builder.rb, line 36
def query_action
  self.class.collection ? :find_all : :find_first!
end
query_params() click to toggle source
# File lib/get/builders/query_builder.rb, line 32
def query_params
  { query_action => conditions.merge(@options) }
end
template_class(args) click to toggle source
# File lib/get/builders/query_builder.rb, line 15
def template_class(args)
  Class.new(::Get::Db) do
    include Get

    class << self
      attr_reader :field
    end

    @field, @entity, @collection, @store = args[:key], args[:result_entity], args[:collection], args[:store]

    def initialize(params = nil, options = {})
      @params, @options = params, options
      super(query_params)
    end

    private

    def query_params
      { query_action => conditions.merge(@options) }
    end

    def query_action
      self.class.collection ? :find_all : :find_first!
    end

    # find_first
    def conditions
      return { conditions: @params } unless self.class.field
      { conditions: { self.class.field => @params } }
    end
  end
end