plucky 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,13 +1,19 @@
1
1
  # encoding: UTF-8
2
2
  module Plucky
3
3
  class CriteriaHash
4
- attr_reader :source
4
+ attr_reader :source, :options
5
5
 
6
6
  def initialize(hash={}, options={})
7
7
  @source, @options = {}, options
8
8
  hash.each { |key, value| self[key] = value }
9
9
  end
10
10
 
11
+ def initialize_copy(source)
12
+ super
13
+ @options = @options.dup
14
+ @source = @source.dup
15
+ end
16
+
11
17
  def []=(key, value)
12
18
  normalized_key = normalized_key(key)
13
19
  if key.is_a?(SymbolOperator)
@@ -77,6 +83,14 @@ module Plucky
77
83
  @options[:object_ids] = value.flatten
78
84
  end
79
85
 
86
+ # The definition of simple is querying by only _id or _id and _type.
87
+ # If this is the case, you can use IdentityMap in library to not perform
88
+ # query and instead just return from map.
89
+ def simple?
90
+ key_set = keys.to_set
91
+ key_set == [:_id].to_set || key_set == [:_id, :_type].to_set
92
+ end
93
+
80
94
  private
81
95
  def method_missing(method, *args, &block)
82
96
  @source.send(method, *args, &block)
@@ -8,6 +8,11 @@ module Plucky
8
8
  hash.each { |key, value| self[key] = value }
9
9
  end
10
10
 
11
+ def initialize_copy(source)
12
+ super
13
+ @source = @source.dup
14
+ end
15
+
11
16
  def []=(key, value)
12
17
  key = normalized_key(key)
13
18
  source[key] = normalized_value(key, value)
@@ -21,6 +26,10 @@ module Plucky
21
26
  source
22
27
  end
23
28
 
29
+ def fields?
30
+ !self[:fields].nil?
31
+ end
32
+
24
33
  private
25
34
  def method_missing(method, *args, &block)
26
35
  @source.send(method, *args, &block)
@@ -1,18 +1,29 @@
1
1
  # encoding: UTF-8
2
+ require 'forwardable'
2
3
  module Plucky
3
4
  class Query
5
+ extend Forwardable
6
+
4
7
  OptionKeys = [
5
8
  :select, :offset, :order, # MM
6
9
  :fields, :skip, :limit, :sort, :hint, :snapshot, :batch_size, :timeout # Ruby Driver
7
10
  ]
8
11
 
9
- attr_reader :criteria, :options, :collection
12
+ attr_reader :criteria, :options, :collection
13
+ def_delegator :criteria, :simple?
14
+ def_delegator :options, :fields?
10
15
 
11
16
  def initialize(collection, opts={})
12
17
  @collection, @options, @criteria = collection, OptionsHash.new, CriteriaHash.new
13
18
  opts.each { |key, value| self[key] = value }
14
19
  end
15
20
 
21
+ def initialize_copy(source)
22
+ super
23
+ @criteria = @criteria.dup
24
+ @options = @options.dup
25
+ end
26
+
16
27
  def object_ids(*keys)
17
28
  return criteria.object_ids if keys.empty?
18
29
  criteria.object_ids = *keys
@@ -28,9 +39,7 @@ module Plucky
28
39
  end
29
40
 
30
41
  def all(opts={})
31
- [].tap do |docs|
32
- update(opts).find(to_hash).each { |doc| docs << doc }
33
- end
42
+ update(opts).find(to_hash).to_a
34
43
  end
35
44
 
36
45
  def first(opts={})
@@ -65,7 +74,7 @@ module Plucky
65
74
  end
66
75
 
67
76
  def reverse
68
- self[:sort].map! { |s| [s[0], -s[1]] }
77
+ self[:sort].map! { |s| [s[0], -s[1]] } unless self[:sort].nil?
69
78
  self
70
79
  end
71
80
 
@@ -110,5 +119,12 @@ module Plucky
110
119
  def to_hash
111
120
  criteria.to_hash.merge(options.to_hash)
112
121
  end
122
+
123
+ def inspect
124
+ as_nice_string = to_hash.collect do |key, value|
125
+ " #{key}: #{value.inspect}"
126
+ end.sort.join(",")
127
+ "#<#{self.class}#{as_nice_string}>"
128
+ end
113
129
  end
114
130
  end
@@ -1,4 +1,4 @@
1
1
  # encoding: UTF-8
2
2
  module Plucky
3
- Version = '0.1.2'
3
+ Version = '0.1.3'
4
4
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 2
9
- version: 0.1.2
8
+ - 3
9
+ version: 0.1.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - John Nunemaker
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-05-19 00:00:00 -04:00
17
+ date: 2010-05-23 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency