module Origin::Queryable

A queryable is any object that needs origin's dsl injected into it to build MongoDB queries. For example, a Mongoid::Criteria is an Origin::Queryable.

@example Include queryable functionality.

class Criteria
  include Origin::Queryable
end

Attributes

aliases[R]

@attribute [r] aliases The aliases. @attribute [r] driver The Mongo driver being used. @attribute [r] serializers The serializers.

driver[R]

@attribute [r] aliases The aliases. @attribute [r] driver The Mongo driver being used. @attribute [r] serializers The serializers.

serializers[R]

@attribute [r] aliases The aliases. @attribute [r] driver The Mongo driver being used. @attribute [r] serializers The serializers.

Public Class Methods

new(aliases = {}, serializers = {}, driver = :mongo) { |self| ... } click to toggle source

Initialize the new queryable. Will yield itself to the block if a block is provided for objects that need additional behaviour.

@example Initialize the queryable.

Origin::Queryable.new

@param [ Hash ] aliases The optional field aliases. @param [ Hash ] serializers The optional field serializers. @param [ Symbol ] driver The driver being used.

@since 1.0.0

# File lib/origin/queryable.rb, line 60
def initialize(aliases = {}, serializers = {}, driver = :mongo)
  @aliases, @driver, @serializers = aliases, driver.to_sym, serializers
  @options = Options.new(aliases, serializers)
  @selector = Selector.new(aliases, serializers)
  @pipeline = Pipeline.new(aliases)
  yield(self) if block_given?
end

Public Instance Methods

==(other) click to toggle source

Is this queryable equal to another object? Is true if the selector and options are equal.

@example Are the objects equal?

queryable == criteria

@param [ Object ] other The object to compare against.

@return [ true, false ] If the objects are equal.

@since 1.0.0

# File lib/origin/queryable.rb, line 44
def ==(other)
  return false unless other.is_a?(Queryable)
  selector == other.selector && options == other.options
end
initialize_copy(other) click to toggle source

Handle the creation of a copy via clone or dup.

@example Handle copy initialization.

queryable.initialize_copy(criteria)

@param [ Queryable ] other The original copy.

@since 1.0.0

# File lib/origin/queryable.rb, line 76
def initialize_copy(other)
  @options = other.options.__deep_copy__
  @selector = other.selector.__deep_copy__
  @pipeline = other.pipeline.__deep_copy__
end