class Atomsphere::Query::Builder

DSL for onstructing an {Atomsphere::Query} @see Atomsphere#query @attr_reader [Atomsphere::Query] query output query object

Attributes

query[R]

Public Class Methods

new(object_type) click to toggle source
# File lib/atomsphere/query/builder.rb, line 10
def initialize(object_type)
  @query = object_type.nil? ? Query.new : Query.new(object_type)
end

Public Instance Methods

group(operator, &block) click to toggle source

Define a {GroupingExpression} at the top level of the query. If called more than once, subsequent calls create a grouping expression within the first created {GroupingExpression}.

# File lib/atomsphere/query/builder.rb, line 17
def group operator, &block
  new_group = GroupingExpression.new(operator)
  Group.new(new_group).instance_eval(&block)

  if @query.filter
    @query.filter.nested_expression << new_group
  else
    @query.filter = new_group
  end
end
method_missing(m, *args, &block) click to toggle source

Allows for defining of {SimpleExpression}s at the top level of the query. Creates a top level {GroupingExpression} if none yet exists to contain it.

# File lib/atomsphere/query/builder.rb, line 31
def method_missing m, *args, &block
  @query.filter = GroupingExpression.new(:and) unless @query.filter
  Group.new(@query.filter).instance_eval do
    send(m, *args, &block)
  end
end