redis_assist 0.4.1 → 0.4.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 +4 -4
- data/lib/redis_assist/base.rb +50 -35
- data/lib/redis_assist/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7df8d359a12b776a26ea86bf2b593825b5146994
|
4
|
+
data.tar.gz: 010c01a56bb842ca476a528b6b4ea254fa41e7ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 982ea611873442583290d984117e8015c7668b9e884d0f36a2ef915af9af4bedb6bf2abc0b90c52ce039d75e5e021286c388d8866f12c57ff6d8032db3ab2e12
|
7
|
+
data.tar.gz: d55d9df08d606043c4df664b42bfe4ff582cbbeea18e77746236859c1da57bc4dd42b5151cf24493a8616e15d4eafa0e19fc75c695936c08f55b8d5543b18d72
|
data/lib/redis_assist/base.rb
CHANGED
@@ -33,7 +33,7 @@ module RedisAssist
|
|
33
33
|
# Deprecated finds
|
34
34
|
def find_by_id(id, opts={})
|
35
35
|
raw_attributes = load_attributes(id)
|
36
|
-
return nil unless raw_attributes[id]
|
36
|
+
return nil unless raw_attributes[id][:exists].value
|
37
37
|
obj = new(id: id, raw_attributes: raw_attributes[id])
|
38
38
|
(obj.deleted? && !opts[:deleted].eql?(true)) ? nil : obj
|
39
39
|
end
|
@@ -42,8 +42,10 @@ module RedisAssist
|
|
42
42
|
attrs = load_attributes(*ids)
|
43
43
|
raw_attributes = attrs
|
44
44
|
ids.each_with_object([]) do |id, instances|
|
45
|
-
|
46
|
-
|
45
|
+
if raw_attributes[id][:exists].value
|
46
|
+
instance = new(id: id, raw_attributes: raw_attributes[id])
|
47
|
+
instances << instance if instance && (!instance.deleted? || opts[:deleted].eql?(true))
|
48
|
+
end
|
47
49
|
end
|
48
50
|
end
|
49
51
|
|
@@ -152,24 +154,16 @@ module RedisAssist
|
|
152
154
|
|
153
155
|
future_fields = pipe.hmget(key_for(id, :attributes), fields.keys)
|
154
156
|
|
155
|
-
futures[id] = {
|
157
|
+
futures[id] = {
|
158
|
+
lists: future_lists,
|
159
|
+
hashes: future_hashes,
|
160
|
+
fields: future_fields,
|
161
|
+
exists: pipe.exists(key_for(id, :attributes))
|
162
|
+
}
|
156
163
|
end
|
157
164
|
end
|
158
165
|
|
159
|
-
|
160
|
-
future_attrs = ids.each_with_object({}) do |id, obj|
|
161
|
-
obj[id] = future_attrs[id] unless future_attrs[id][:fields].value.select{|v| !v.nil? }.empty?
|
162
|
-
end
|
163
|
-
|
164
|
-
# Map futures to attributes
|
165
|
-
future_attrs.each_with_object(attrs) do |kv, obj|
|
166
|
-
lists = kv[1][:lists].each_with_object({}){|kv,obj| obj[kv[0]] = kv[1].value unless kv[1].value.nil? }
|
167
|
-
hashes = kv[1][:hashes].each_with_object({}){|kv,obj| obj[kv[0]] = kv[1].value unless kv[1].value.nil?}
|
168
|
-
fields = Hash[*self.fields.keys.zip(kv[1][:fields].value).flatten]
|
169
|
-
obj[kv[0]] = { lists: lists, hashes: hashes, fields: fields }
|
170
|
-
end
|
171
|
-
|
172
|
-
attrs
|
166
|
+
future_attrs
|
173
167
|
end
|
174
168
|
|
175
169
|
def hash_to_redis(obj)
|
@@ -181,8 +175,13 @@ module RedisAssist
|
|
181
175
|
def define_list(name)
|
182
176
|
define_method(name) do
|
183
177
|
opts = self.class.persisted_attrs[name]
|
184
|
-
|
185
|
-
lists[name]
|
178
|
+
|
179
|
+
if !lists[name] && opts[:default]
|
180
|
+
opts[:default]
|
181
|
+
else
|
182
|
+
send("#{name}=", lists[name].value) if lists[name].is_a?(Redis::Future)
|
183
|
+
lists[name]
|
184
|
+
end
|
186
185
|
end
|
187
186
|
|
188
187
|
define_method("#{name}=") do |val|
|
@@ -194,8 +193,12 @@ module RedisAssist
|
|
194
193
|
def define_hash(name)
|
195
194
|
define_method(name) do
|
196
195
|
opts = self.class.persisted_attrs[name]
|
197
|
-
|
198
|
-
hashes[name]
|
196
|
+
|
197
|
+
if !hashes[name] && opts[:default]
|
198
|
+
opts[:default]
|
199
|
+
else
|
200
|
+
self.send("#{name}=", hashes[name].value)
|
201
|
+
end
|
199
202
|
end
|
200
203
|
|
201
204
|
define_method("#{name}=") do |val|
|
@@ -206,6 +209,11 @@ module RedisAssist
|
|
206
209
|
|
207
210
|
def define_attribute(name)
|
208
211
|
define_method(name) do
|
212
|
+
if attributes.is_a?(Redis::Future)
|
213
|
+
value = attributes.value
|
214
|
+
self.attributes = value ? Hash[*self.class.fields.keys.zip(value).flatten] : {}
|
215
|
+
end
|
216
|
+
|
209
217
|
self.class.transform(:from, name, attributes[name])
|
210
218
|
end
|
211
219
|
|
@@ -223,12 +231,14 @@ module RedisAssist
|
|
223
231
|
self.lists = {}
|
224
232
|
self.hashes = {}
|
225
233
|
|
234
|
+
if attrs[:id]
|
235
|
+
end
|
236
|
+
|
226
237
|
if attrs[:id]
|
227
238
|
self.id = attrs[:id]
|
228
239
|
load_attributes(attrs[:raw_attributes])
|
240
|
+
return self if self.id
|
229
241
|
end
|
230
|
-
|
231
|
-
return self if id
|
232
242
|
|
233
243
|
self.new_record = true
|
234
244
|
|
@@ -259,18 +269,24 @@ module RedisAssist
|
|
259
269
|
redis.multi do
|
260
270
|
# build the arguments to pass to redis hmset
|
261
271
|
# and insure the attributes are explicitely declared
|
262
|
-
|
263
|
-
|
264
|
-
|
272
|
+
|
273
|
+
unless attributes.is_a?(Redis::Future)
|
274
|
+
attribute_args = hash_to_redis(attributes)
|
275
|
+
redis.hmset(key_for(:attributes), *attribute_args)
|
276
|
+
end
|
265
277
|
|
266
278
|
lists.each do |name, val|
|
267
|
-
|
268
|
-
|
279
|
+
if val && !val.is_a?(Redis::Future)
|
280
|
+
redis.del(key_for(name))
|
281
|
+
redis.rpush(key_for(name), val) unless val.empty?
|
282
|
+
end
|
269
283
|
end
|
270
284
|
|
271
285
|
hashes.each do |name, val|
|
272
|
-
|
273
|
-
|
286
|
+
unless val.is_a?(Redis::Future)
|
287
|
+
hash_as_args = hash_to_redis(val)
|
288
|
+
redis.hmset(key_for(name), *hash_as_args)
|
289
|
+
end
|
274
290
|
end
|
275
291
|
end
|
276
292
|
|
@@ -344,10 +360,9 @@ module RedisAssist
|
|
344
360
|
|
345
361
|
def load_attributes(raw_attributes)
|
346
362
|
return nil unless raw_attributes
|
347
|
-
|
348
|
-
self.
|
349
|
-
self.
|
350
|
-
self.attributes = load_response[id][:fields]
|
363
|
+
self.lists = raw_attributes[:lists]
|
364
|
+
self.hashes = raw_attributes[:hashes]
|
365
|
+
self.attributes = raw_attributes[:fields]
|
351
366
|
self.new_record = false
|
352
367
|
end
|
353
368
|
|
data/lib/redis_assist/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis_assist
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tyler Love
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-04-
|
11
|
+
date: 2013-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|