onthebeach/daodalus

View on GitHub
lib/daodalus/dsl/aggregation/match.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Daodalus
  module DSL
    module Aggregation
      class Match
        include Clause
        include Operator

        attr_reader :criteria

        def initialize(dao, field, criteria={}, query=[])
          @dao = dao
          @field = field.to_s
          @criteria = criteria
          @query = query
        end

        def operator
          '$match'
        end

        def to_mongo
          { operator => criteria }
        end

        def match(field = nil)
          if field.nil? then self else self.and(field) end
        end

        private

        attr_reader :field, :query

        def chain(field)
          Match.new(dao, field, criteria, query)
        end

        def add_clause(criteria)
          Match.new(dao, field, criteria, query)
        end

      end
    end
  end
end