Sha256: 77b7a31ffbc1d5a703f0afa4d8e43fe79125c45d5f6c4f6c8621d01222af6ac7

Contents?: true

Size: 1.65 KB

Versions: 13

Compression:

Stored size: 1.65 KB

Contents

module MongoModel
  class Scope
    module QueryMethods
      def initialize(*)
        SINGLE_VALUE_METHODS.each { |m| instance_variable_set("@#{m}_value", nil) }
        MULTI_VALUE_METHODS.each { |m| instance_variable_set("@#{m}_values", []) }
      end
      
      MULTI_VALUE_METHODS.each do |query_method|
        attr_accessor :"#{query_method}_values"
        
        class_eval <<-CEVAL, __FILE__
          def #{query_method}(*args, &block)
            new_scope = clone
            value = Array.wrap(args.flatten).reject { |x| x.blank? }
            new_scope.#{query_method}_values += value if value.present?
            new_scope
          end
          
          def #{query_method}!(*args, &block)
            new_scope = clone
            value = Array.wrap(args.flatten).reject { |x| x.blank? }
            new_scope.#{query_method}_values = value
            new_scope
          end
        CEVAL
      end
      
      SINGLE_VALUE_METHODS.each do |query_method|
        attr_accessor :"#{query_method}_value"

        class_eval <<-CEVAL, __FILE__
          def #{query_method}(value, &block)
            new_scope = clone
            new_scope.#{query_method}_value = value
            new_scope
          end
        CEVAL
      end
      
      def from(value, &block)
        new_scope = clone
        new_scope.from_value = InstrumentedCollection.new(value.is_a?(String) ? klass.database.collection(value) : value)
        new_scope
      end
      
      def reverse_order
        if order_values.empty?
          order(:id.desc)
        else
          except(:order).order(MongoOrder.parse(order_values).reverse.to_a)
        end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
mongomodel-0.5.5 lib/mongomodel/support/scope/query_methods.rb
mongomodel-0.5.4 lib/mongomodel/support/scope/query_methods.rb
mongomodel-0.5.3 lib/mongomodel/support/scope/query_methods.rb
mongomodel-0.5.2 lib/mongomodel/support/scope/query_methods.rb
mongomodel-0.5.1 lib/mongomodel/support/scope/query_methods.rb
mongomodel-0.5.0 lib/mongomodel/support/scope/query_methods.rb
mongomodel-0.4.9 lib/mongomodel/support/scope/query_methods.rb
mongomodel-0.4.8 lib/mongomodel/support/scope/query_methods.rb
mongomodel-0.4.7 lib/mongomodel/support/scope/query_methods.rb
mongomodel-0.4.6 lib/mongomodel/support/scope/query_methods.rb
mongomodel-0.4.5 lib/mongomodel/support/scope/query_methods.rb
mongomodel-0.4.4 lib/mongomodel/support/scope/query_methods.rb
mongomodel-0.4.3 lib/mongomodel/support/scope/query_methods.rb