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