lib/plucky/query.rb in plucky-0.3.7 vs lib/plucky/query.rb in plucky-0.3.8

- old
+ new

@@ -4,12 +4,13 @@ class Query include Enumerable extend Forwardable OptionKeys = [ - :select, :offset, :order, # MM - :fields, :skip, :limit, :sort, :hint, :snapshot, :batch_size, :timeout # Ruby Driver + :select, :offset, :order, # MM + :fields, :skip, :limit, :sort, :hint, :snapshot, # Ruby Driver + :batch_size, :timeout, :transformer # Ruby Driver ] attr_reader :criteria, :options, :collection def_delegator :criteria, :simple? def_delegator :options, :fields? @@ -94,34 +95,39 @@ def size count end + def distinct(key, opts = {}) + query = clone.update(opts) + query.collection.distinct(key, query.criteria.to_hash) + end + def update(opts={}) opts.each { |key, value| self[key] = value } self end def fields(*args) clone.tap { |query| query.options[:fields] = *args } end - + def ignore(*args) - set_fields(args,0) + set_fields(args, 0) end - + def only(*args) - set_fields(args,1) - end + set_fields(args, 1) + end def limit(count=nil) clone.tap { |query| query.options[:limit] = count } end def reverse clone.tap do |query| - query[:sort].map! do |s| + query[:sort] = query[:sort].map do |s| [s[0], -s[1]] end unless query.options[:sort].nil? end end @@ -190,16 +196,14 @@ as_nice_string = to_hash.collect do |key, value| " #{key}: #{value.inspect}" end.sort.join(",") "#<#{self.class}#{as_nice_string}>" end - - private - + + private def set_fields(field_list, value) the_fields = {} field_list.each {|field| the_fields[field.to_sym] = value} clone.tap { |query| query.options[:fields] = the_fields} end - end end \ No newline at end of file