flipper-mongo 0.10.1 → 0.10.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 49291fc7887b74611db0a834f135b473f33fd887
4
- data.tar.gz: 7596119940bdedbcc6a26c0ee24772aee8d8ba3b
3
+ metadata.gz: 7891f99a1fdfd655c3bd35799f5ff5538c368762
4
+ data.tar.gz: df2070a28f90ffd63a7b187a6c6c34c8aa28db38
5
5
  SHA512:
6
- metadata.gz: bdc5ac1e7a84d6166e3a3611fbd852e77518588453aa2edb2e25a3761b63e9148d8d8d90fbb78efcca582db0f7e3fdcdbc4f970c37867ca11bd58f888955e842
7
- data.tar.gz: 728c8635b0556b1086bbec02041b762505e340012da8127f96dc0d879305bb82fcf382b3f54742a89bd051b5fa9639fd3d29724d1f3c47b8df05adcf9b0f4c2f
6
+ metadata.gz: 21e873aecd058e8fd1b3bef37c047a8edf056c0fcdfc3001a90ce25b5d6de893f400f812abee528ba5a343dbc189a54fb4436aa0c48fe814f8c7a2631132bc20
7
+ data.tar.gz: 252121e68251b1e6c1a233b13a980c7aaadcc12f88714b3152e2040aab4a32abc7b6b2e9db7f26d5ebc3650a0447a35a1f0dfba74bcd5722b401eb3de49eff6a
@@ -46,20 +46,16 @@ module Flipper
46
46
  #
47
47
  # Returns a Hash of Flipper::Gate#key => value.
48
48
  def get(feature)
49
- result = {}
50
49
  doc = find(feature.key)
50
+ result_for_feature(feature, doc)
51
+ end
51
52
 
52
- feature.gates.each do |gate|
53
- result[gate.key] = case gate.data_type
54
- when :boolean, :integer
55
- doc[gate.key.to_s]
56
- when :set
57
- doc.fetch(gate.key.to_s) { Set.new }.to_set
58
- else
59
- unsupported_data_type gate.data_type
60
- end
53
+ def get_multi(features)
54
+ docs = find_many(features.map(&:key))
55
+ result = {}
56
+ features.each do |feature|
57
+ result[feature.key] = result_for_feature(feature, docs[feature.key])
61
58
  end
62
-
63
59
  result
64
60
  end
65
61
 
@@ -116,23 +112,42 @@ module Flipper
116
112
 
117
113
  # Private
118
114
  def find(key)
119
- @collection.find(criteria(key)).limit(1).first || {}
115
+ @collection.find({:_id => key.to_s}).limit(1).first || {}
116
+ end
117
+
118
+ def find_many(keys)
119
+ docs = @collection.find({_id: {'$in' => keys}}).to_a
120
+ result = Hash.new { |hash, key| hash[key] = {} }
121
+ docs.each do |doc|
122
+ result[doc["_id"]] = doc
123
+ end
124
+ result
120
125
  end
121
126
 
122
127
  # Private
123
128
  def update(key, updates)
124
129
  options = {:upsert => true}
125
- @collection.find(criteria(key)).update_one(updates, options)
130
+ @collection.find({:_id => key.to_s}).update_one(updates, options)
126
131
  end
127
132
 
128
133
  # Private
129
134
  def delete(key)
130
- @collection.find(criteria(key)).delete_one
135
+ @collection.find({:_id => key.to_s}).delete_one
131
136
  end
132
137
 
133
- # Private
134
- def criteria(key)
135
- {:_id => key.to_s}
138
+ def result_for_feature(feature, doc)
139
+ result = {}
140
+ feature.gates.each do |gate|
141
+ result[gate.key] = case gate.data_type
142
+ when :boolean, :integer
143
+ doc[gate.key.to_s]
144
+ when :set
145
+ doc.fetch(gate.key.to_s) { Set.new }.to_set
146
+ else
147
+ unsupported_data_type gate.data_type
148
+ end
149
+ end
150
+ result
136
151
  end
137
152
  end
138
153
  end
@@ -1,3 +1,3 @@
1
1
  module Flipper
2
- VERSION = "0.10.1".freeze
2
+ VERSION = "0.10.2".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flipper-mongo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Nunemaker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-19 00:00:00.000000000 Z
11
+ date: 2016-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: flipper
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.10.1
19
+ version: 0.10.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.10.1
26
+ version: 0.10.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mongo
29
29
  requirement: !ruby/object:Gem::Requirement